我正在寻找在30多个开发人员,20多个解决方案和60多个项目的组织中应用签名程序集的建议和最佳实践。我们正在使用Visual Studio Team System 2008和TFS。
虽然创建密钥并签署程序集是一个非常简单直接的过程,但我担心如何以最好的方式管理它。
到目前为止我的想法:
我们会遇到这种方法的任何问题吗?
其他一些想法:
欢迎任何输入,好/坏经历和建议。 :)
答案 0 :(得分:13)
过去,我已经非常有效地使用单个密钥来实现多个解决方案和项目。它是一种简单的方法,可确保只有有权访问私钥文件的人才能发布通过强名称检查的构建。
注意:要使用单个密钥文件,我们发现最简单的方法是将文件添加为每个项目的链接。
我看到的一个缺点是,让开发人员可以使用密钥文件意味着它不应该像应该的那样私密。理想情况下,尽可能少的人(例如只是构建过程)应该有权访问/知道密码。
单一文件方法使密钥的管理变得简单(只有一个),同时仍然允许强命名的好处。
答案 1 :(得分:6)
我们目前在解决方案中为每个项目使用相同的强密钥(.SNK)。根据您的项目,您将如何管理每个项目的不同密钥。
如果您想要更高的安全性,我想您可以为每个项目重新创建密钥,但这将成为管理的噩梦。请记住,在一天结束时,SNK只显示代码来自您的公司,并防止程序集被更改,这不是一个巨大的内部安全功能。
为此,如果您不信任/不希望开发人员构建代码,您应该限制源代码控制并查看使用构建服务器等。
答案 2 :(得分:1)
您还可以将强名称密钥保存在根级别的文件夹中,与所有项目文件夹位于同一级别。 在项目属性中选择此文件时 - >签名选项卡,密钥文件被复制到项目文件夹。 删除此文件。在记事本中打开.csproj文件。查找以下标记 mykey.snk 手动编辑密钥文件的路径,确保指定项目文件夹的相对路径。保存文件。 现在在visual studio中打开项目属性。您可以看到更新的路径指向正确的位置。