我创建了一个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包。
我错过了什么?
答案 0 :(得分:2)
最终找到了答案:
VSIX with Project Templates and NuGet Packages
修复相当冗长,因此最好在他的视频中展示。
答案 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。