- Быстрое решение - добавить событие BeforeBuild , которое вызывает sn.exe:
Откройте файл .wixproj
и добавьте:
<Target Name="BeforeBuild">
<ItemGroup>
<AssemblyToSign Include="C:\SignedAssembly1.dll"/>
<AssemblyToSign Include="C:\SignedAssembly2.dll"/>
</ItemGroup>
<Exec Command="sn -q -vf %(AssemblyToSign.Identity)" />
</Target>
Это приведет к сбою сборки, если сборка не прошла проверку.
- Другое решение - использовать пакет расширений MSBuild Подпись класс:
Еще раз, это потерпит неудачу в вашей сборке при неудачной проверке:
<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>
Чтобы использовать его, необходимо добавить ссылку на сборку пакета расширений:
<PropertyGroup>
<ExtensionTasksPath Condition="Exists('$(MSBuildProjectDirectory)\..\..\Common')">$(MSBuildProjectDirectory)\..\..\Common</ExtensionTasksPath>
</PropertyGroup>
<UsingTask AssemblyFile="$(ExtensionTasksPath)\MSBuild.ExtensionPack.dll" TaskName="MSBuild.ExtensionPack.Framework.Signing"/>