我们正在使用 Msbuild 构建我们的 Wix 项目。由于各种问题,wix 中指定的程序集很少被延迟签名。当它安装在 GAC 中时,它失败了。
有什么方法可以将强名称签名验证作为 wix 中的预构建活动进行验证?
我sn -vf "assembly"
用来做强名称验证。
我只想对将打包在 wix msi 中的 dll 进行强名称验证(换句话说,在 wxs 文件中指定的程序集)
怎么做呢?
我们正在使用 Msbuild 构建我们的 Wix 项目。由于各种问题,wix 中指定的程序集很少被延迟签名。当它安装在 GAC 中时,它失败了。
有什么方法可以将强名称签名验证作为 wix 中的预构建活动进行验证?
我sn -vf "assembly"
用来做强名称验证。
我只想对将打包在 wix msi 中的 dll 进行强名称验证(换句话说,在 wxs 文件中指定的程序集)
怎么做呢?
打开你的.wixproj
文件并添加:
<Target Name="BeforeBuild">
<ItemGroup>
<AssemblyToSign Include="C:\SignedAssembly1.dll"/>
<AssemblyToSign Include="C:\SignedAssembly2.dll"/>
</ItemGroup>
<Exec Command="sn -q -vf %(AssemblyToSign.Identity)" />
</Target>
一旦程序集验证失败,这将使您的构建失败。
再一次,这将使您的构建失败验证失败:
<Target Name="BeforeBuild">
<ItemGroup>
<AssemblyToSign Include="C:\SignedAssembly1.dll"/>
<AssemblyToSign Include="C:\SignedAssembly2.dll"/>
</ItemGroup>
<MSBuild.ExtensionPack.Framework.Signing
TaskAction="Sign"
ToolPath="C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin"
KeyFile="D:\key.snk"
Assemblies="@(AssemblyToSign)" />
</Target>
为了使用它,您必须添加对 Extension Pack 程序集的引用:
<PropertyGroup>
<ExtensionTasksPath Condition="Exists('$(MSBuildProjectDirectory)\..\..\Common')">$(MSBuildProjectDirectory)\..\..\Common</ExtensionTasksPath>
</PropertyGroup>
<UsingTask AssemblyFile="$(ExtensionTasksPath)\MSBuild.ExtensionPack.dll" TaskName="MSBuild.ExtensionPack.Framework.Signing"/>