Visual Studio Extensions(VSIX)需要强名吗?

时间:2013-05-08 18:04:04

标签: visual-studio-sdk strongname

Visual Studio 2012 SDK中的默认VSPackage模板生成一个使用强命名的项目。

由于强命名是可传递的,这意味着我添加的任何引用(例如,同一解决方案中的另一个项目或第三方依赖项)也需要强名称。

由于我不觉得强烈命名第三方依赖,我宁愿删除VSIX的强命名。

这样做的缺点是什么?

1 个答案:

答案 0 :(得分:4)

如果您已经可以部署VSIX并且在GAC中不需要任何内容​​,那么不,Visual Studio不要求您签名强名称。我相信模板向导确实需要强名称签名,但这只是因为它们必须安装到GAC中。

我可以想到您可能想要的一些原因:如果您的软件包公开了其他扩展程序使用的公共API,那么您可能会引用常见的DLL作为其他人使用您的公共API。您可能希望对公共接口二进制文件进行强名称签名,并且根据项目的设置方式,您可能必须使用强名称对所有内容进行签名。

此外,如果您没有强名称标志,则可能会发生与其他分机名称冲突的风险。如果你创建了一个名为“Package.dll”的DLL,而另一个扩展也做了,并且你们两个都没有强名称签署你的二进制文件,那么CLR可能会在这里有点混乱。因此,如果您没有强名称签名,请确保您的程序集名称“足够独特”以避免此风险。

对于它的价值,当我们在内部测试Roslyn语言服务时,我们只需安装一个包含所有Roslyn位的VSIX即可。快速浏览源代码控制历史意味着我们在第一年半的时候没有对我们的包二进制文件进行强名称签名,直到我们最终不得不将其作为Microsoft发送代码的过程的一部分。