首页 文章

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

提问于
浏览
8

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

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

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

当我尝试修复此by doing that时,它失败并显示一条错误消息,指出密钥已存在 .

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

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

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

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

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

1 回答

  • 0

    @ ccpanda的评论解决了这个问题 . 包含 AssemblyKeyFile 存档使这项工作成功 . 例如 . :

    [assembly: AssemblyKeyFile("HerpDerpWarblerManagementStudioProTM.snk")]
    

    这种情况的长期和短期是两个视觉工作室将根据其模式采取不同的事情 . 解决方案不是让他们假设同样的事情,而是告诉他们该做什么 .

    (我选择使用 .snk 文件,因为每次其他开发人员都试图构建时,'s the way you have to do it if you don' t想要重新输入密码 . This question has a lot more information . 基本上,你必须使用 .snk 文件或者让你的构建过程编译然后通过调用 sn.exe 对文件进行签名,以某种方式知道为每个人使用 .pfx 文件 . )

    (@ccpanda:如果你把你的评论写成答案(也许你做了,Stack Overflow有帮助地认定它是微不足道的),我会把它标记为答案 . )

相关问题