【问题标题】:Multiple projects need to use 1 SNK file多个项目需要使用1个SNK文件
【发布时间】:2010-02-12 14:17:08
【问题描述】:

我正在使用 Visual Studio 2008,我有一个包含多个项目的解决方案。我有 1 个 snk 来签署我的程序集,它位于解决方案文件夹中。

我已将 snk 链接到我的每个项目,但现在当我尝试使用链接的 snk 签署我的项目时,我无法通过文件对话框找到 snk 文件。

我错过了一步吗?

Solution
   > Solution Folder
       MyKey.snk
   > Project X
       > _LinkedFiles
           MyKey.snk (physical file doesn't appear here but shows in VS)
       > ...

【问题讨论】:

    标签: .net visual-studio visual-studio-2008 strongname snk


    【解决方案1】:

    跨项目共享强名称密钥文件:

    http://blogs.msdn.com/shawnfa/archive/2006/04/24/582278.aspx

    【讨论】:

    • 链接已失效。请提供更多内容。
    【解决方案2】:

    好吧,这里没有太多回应,但我确实找到了一个让我感到满意的解决方案。我有一个 ProductAssemblyInfo,它位于解决方案文件夹中,但链接到每个项目,如下所示。

    Solution
       > Build (Solution Folder)
           MyKey.snk
           ProductAssemblyInfo.cs
       > Project X
           > _LinkedFiles
               ProductAssemblyInfo.cs
           > ...
    

    ProductLevelAssembly 包含以下行:

    [assembly: AssemblyKeyFile("../../Build/MyKey.snk")]
    

    这样,密钥文件永远不会被复制到每个项目中,但每个程序集仍然由密钥签名。

    【讨论】:

    • AssemblyKeyFile 已弃用
    • 已弃用?来源?
    【解决方案3】:

    不要链接它,只需复制它。如果您重建 SNK,您将需要再次将其复制到所有项目中,但需要这样做的可能性非常低。实际上,我们只是在修改主版本号时才更改 SNK。

    此外,当您链接文件时,您是在解决方案文件中链接它,而不是制作同时编辑两个位置的副本。浏览对话框只会显示驱动器上存在的文件。

    【讨论】:

    • 这个答案在技术上是可行的。但请记住,您的私钥文件 (.snk) 就像上面写着“我们就是我们所说的那样”......因此拥有它的副本可能会带来安全风险。所以我同意这个答案,但它带有免责声明(恕我直言)。
    猜你喜欢
    • 1970-01-01
    • 2015-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 2013-05-19
    • 2019-03-12
    • 1970-01-01
    相关资源
    最近更新 更多