场景是:我正在使用 TeamCity 构建我的解决方案,我没有以管理员身份运行构建帐户;所以我遇到了强名称键的问题。
我知道一些解决方案,例如以管理员身份运行构建并将证书注册到适当的容器中。
是否仅在发布构建期间而不是在调试构建期间对解决方案文件中的程序集进行签名。或者有没有类似的解决方案?
我觉得奇怪的是,没有可以设置程序集是否应该签名的 MSBuild 参数。因为如果您查看 csproj 文件,则可以选择已签名或未签名
最佳答案
另一个选项是编辑项目文件。默认情况下,如果您在 Visual Studio 中启用程序集签名,它将用于所有构建配置。项目文件包含如下元素。
<PropertyGroup>
<SignAssembly>true</SignAssembly>
</PropertyGroup>
<PropertyGroup>
<AssemblyOriginatorKeyFile>YourKeyFile.pfx</AssemblyOriginatorKeyFile>
</PropertyGroup>
如果您只想在特定的构建配置期间对程序集进行签名,例如 RELEASE。你可以把 <SignAssembly>
和 <AssemblyOriginatorKeyFile>
在 PropertyGroup 元素中,使用 Condition 标识您的构建配置。
因此,如果您想在发布构建期间对您的程序集进行签名,您可以将您的项目文件更改为以下内容。
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<!-- other element of this PropertyGroup -->
<SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>YourKeyFile.pfx</AssemblyOriginatorKeyFile>
</PropertyGroup>
注意:当你改变你的项目文件时,如下。您无法在 Visual Studio 中更改项目属性的签名设置。这意味着在 Visual Studio 中禁用程序集的签名,如果您在 Visual Studio 中更改构建配置也是如此。
https://stackoverflow.com/questions/7903321/