在两个Visual Studio实例中使用签名依赖项,一个提升/管理员,一个正常

Jes*_*per 8 .net strongname code-signing visual-studio-2012

我正在运行Visual Studio 2012并在单独的解决方案中编写后端Web服务和桌面软件.由于桌面软件需要升级("作为管理员"),我需要在提升的Visual Studio实例中运行桌面解决方案.两种解决方案都包含签名库项目.

当我在Visual Studio实例中打开Web服务解决方案而不提升它时,我得到一个类似的构建错误

无法导入以下密钥文件:Redacted.pfx.密钥文件可能受密码保护.要更正此问题,请尝试再次导入证书,或使用以下密钥容器名称手动将证书安装到强名称CSP:VS_KEY_Redacted.

当我尝试通过这样做来解决这个问题时,它会失败并显示一条错误消息,指出密钥已经存在.

当我尝试排除然后重新包含PFX文件时没有把事情做对,但是在项目属性→登录空白时使"强名称密钥文件"下拉列表.接下来,Web服务解决方案构建,但似乎库没有签名,因为在(提升的)桌面解决方案中,构建失败,"程序集生成失败 - 引用程序集'编辑'没有强名称".

如果我尝试从Web服务解决方案中的下拉列表中再次选择PFX文件(并重新输入密码),我会得到:

导入密钥时出错
尝试引用不存在的令牌

从(提升的)桌面解决方案设置PFX文件可以正常工作,但会将我返回到正方形.

看起来,根据高程,Visual Studio会在不同的密钥库中查找可以解锁PFX的任何内容.我是否必须运行两个提升的Visual Studio实例来解决问题,或者我可以以某种方式告诉它在同一个地方查看?

Jes*_*per 0

@ccpanda 的评论解决了这个问题。包含一个AssemblyKeyFile档案就可以完成这项工作。例如:

[assembly: AssemblyKeyFile("HerpDerpWarblerManagementStudioProTM.snk")]
Run Code Online (Sandbox Code Playgroud)

总而言之,这两个 Visual Studio 将根据其模式假设不同的事情。解决方案不是让他们假设同样的事情,而是告诉他们该怎么做。

(我选择使用.snk文件,因为如果您不想每次其他开发人员尝试构建时都重新输入密码,那么您就必须这样做。这个问题有更多信息。基本上,您必须使用一个.snk文件或让您的构建过程进行编译,然后通过调用来签署该文件,sn.exe该调用将以某种方式知道.pfx为每个人使用一个文件。)

(@ccpanda:如果您将评论写为答案(也许您这样做了,并且 Stack Overflow 帮助认为这是微不足道的),我会将其标记为答案。)