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

时间:2016-11-10 16:42:36

标签: visual-studio visual-studio-2015 nuget vsix

我创建了一个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 Visual Studio

     

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

     

确定

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

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

我看到清单可以包含“资产”和“依赖关系”,但是不能立即清楚它们是否可以用于NUGET包。

我错过了什么?

2 个答案:

答案 0 :(得分:2)

最终找到了答案:

VSIX with Project Templates and NuGet Packages

  • 请参阅Min(2013年8月28日)关于其YouTube视频的回答
  • 并注意到KyleMit关于这个相当冗长的视频中的位置的评论。

修复相当冗长,因此最好在他的视频中展示。

答案 1 :(得分:0)

我使用roslyn为自定义命令收到了相同的异常,并且如上所述,在添加其他引用的DLL或NuGet包时,不包括Microsoft.CodeAnalysis DLL。但是,一旦我将NuGet中的Dependencies降级为Visual Studio使用的版本,通常可以在C:\ Program Files(x86)\ Microsoft Visual Studio [Version Number,例如, '14 .0'] \ Common7 \ IDE \ PrivateAssemblies异常不再发生,因为它只使用了可用的dll。