如何将单个密钥文件 link 分配给解决方案中的每个项目?

How to link a single key file to each project in a solution?

我想对解决方案中的几个项目进行强命名,并为此创建了一个 PFX 密钥文件。为了方便管理,我希望这个文件只有一个副本,所以我将它添加为解决方案项。但是,当我尝试通过 Visual Studio 中的“属性”->“签名”菜单 link 项目中的文件时,它会创建密钥文件的本地副本。

我希望能够做的是引用解决方案中的现有密钥文件并使用它签署每个项目,而不创建密钥文件的副本。

有办法吗?

使用 'add existing item' 对话框中的 'add as link' 选项。这在 BizTalk 项目中经常出现,因为必须对 BizTalk 程序集进行签名,并且经常使初学者感到困惑...这是一个非常隐藏的选项。

从您的项目中删除对该文件的任何现有引用。在解决方案资源管理器中,右键单击该项目,转到添加、现有项。浏览到密钥文件,然后在 添加现有项 对话框中 select 它。 添加现有项目对话框的右下角,将添加按钮更改为添加为Link 使用下拉菜单 ,然后单击 添加为 Link 按钮。密钥文件现在已作为 link 而不是副本添加到您的项目中。

在项目的属性中,您现在可以将强名称密钥文件设置为您 link 编辑的文件。如果这最初显示的是文件的绝对路径,请不要担心 - 当您 save/re-open 项目时,绝对路径将更改为相对路径。

如果您在文本编辑器中打开 csproj 文件,您将看到如下内容:

<None Include="..\..\Keys\MyKeyFile.snk">
  <Link>MyKeyFile.snk</Link>
</None>

如果您有很多项目要更改,您可以在 csproj 文件上进行全局搜索和替换,直接将项目更改为 linked 项目。