visual-studio-2010 - 仅在发布构建期间签署具有强名称的程序集

场景是:我正在使用 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/

相关文章:

xcode - Xcrun PackageApplication,无法复制应用程序失败

c++ - CMake可以生成配置文件吗?

visual-studio - Visual Studio 2008 中的构建解决方案和批量构建有什

groovy - 如何生成源文件并用gradle编译

build - Mono 3.0.0 基于 CentOS 6 构建

makefile - makefile 中的变量 $(MAKE) 是什么?

build - 在 Sublime Text 3 中编辑构建系统

c# - vshost.exe 一直在访问我的 .dll,我在构建它时无法更新它

c++ - 在构建库之前让 CMake 执行项目中的目标

c# - 使构建前和构建后的事件脚本漂亮吗?