【问题标题】:Do Visual Studio Extensions (VSIX) need to be strong named?Visual Studio Extensions (VSIX) 是否需要强命名?
【发布时间】:2013-05-08 18:04:04
【问题描述】:

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

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

由于我对强命名第三方依赖项感到不舒服,我更愿意从我的 VSIX 中删除强命名。

这样做有什么缺点?

【问题讨论】:

  • 当我从 VSIX 中删除强命名时,扩展不会在 Visual Studio 中部署(显示)。我正在使用 Visual Studio 2015。

标签: visual-studio-sdk strongname


【解决方案1】:

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

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

此外,如果您没有使用强名称符号,则确实存在与其他扩展名发生名称冲突的风险。如果您创建了一个名为“Package.dll”的 DLL,而另一个扩展也这样做了,并且你们都没有对您的二进制文件进行强名称签名,那么 CLR 可能会在这里感到有些困惑。因此,如果您不是强名称签名,请确保您的程序集名称“足够独特”以避免这种风险。

不管怎样,当我们在内部测试 Roslyn 语言服务时,我们只需安装一个包含所有 Roslyn 位的 VSIX 即可。快速浏览源代码控制历史表明我们在第一年半的时间里没有对我们的包二进制文件进行强名称签名,直到我们最终不得不作为从 Microsoft 运送代码的过程的一部分。

【讨论】:

  • > 我相信模板向导确实需要强名称签名,但这只是因为它们必须安装到 GAC 中。这是不正确的。它们确实需要具有强名称,但不需要在 GAC 中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-01
  • 1970-01-01
  • 2020-10-16
  • 1970-01-01
相关资源
最近更新 更多