如何在 Visual Studio 扩展 (vsix) 中包含 Nuget 包

DrG*_*iff 6 visual-studio vsix nuget visual-studio-2015

我创建了一个 Visual Studio 扩展 (VSIX),它使用 Roslyn 更改我们的应用程序代码。

VSIX 解决方案包括 NUGET 包 Microsoft.CodeAnalysis.Analyzers。顺便说一句,它被描述为版本 1.3.2,但底层 DLL(例如“Microsoft.CodeAnalysis.CSharp.dll”)均报告为 1.3.2。

不管怎样,我把这个放在我们当地的私人画廊里。从那里,我可以将其添加到 Visual Studio (VS2015 Update 3),它会按预期执行。

然而,当我的同事将其添加到他们的 Visual Studio (VS2015 Update 3) 并尝试执行它后,他们收到以下消息:


微软视觉工作室

无法加载文件或程序集“Microsoft.VisualStudio.LanguageServices,Version=1.3.1.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。该系统找不到指定的文件。

好的

当我查看 VSIX 存档时,我确实看到了许多 DLL,但这些是“我的 DLL”以及所有带有前缀“System.”的 DLL。我没有看到任何带有前缀“Microsoft”的内容。我确实尝试手动将 BIN 文件夹中的每个 DLL 复制到 VSIX,看看是否会产生任何影响,但没有成功。

所有引用的 DLL 似乎都具有“本地复制”,因此它们位于我的 BIN 中,但在最终用户的计算机上无法访问它们。

我看到清单可以包含“资产”和“依赖项”,但目前还不清楚这些是否可以用于 NUGET 包。

我缺少什么?

DrG*_*iff 3

最终找到了答案:

带有项目模板和 NuGet 包的 VSIX

  • 请参阅 Min(2013 年 8 月 28 日)关于他的 YouTube 视频的回答
  • 请注意 KyleMit 关于该内容在相当长的视频中出现的位置的评论。

该修复相当冗长,因此最好在他的视频中介绍。