2016-08-14 87 views
2

自从我将“Microsoft.CodeAnalysis.CSharp.Scripting”更新为1.3.2后,我遇到了问题。Roslyn:缺少VSIX包的方法例外

重现步骤:

  1. 创建VS插件与EditorMargin类。
  2. 将.NET更改为4.6
  3. 安装Microsoft.CodeAnalysis.CSharp.Scripting和Microsoft.CodeAnalysis.CSharp。
  4. 在构造函数的地方将下面的代码:

    var t = new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary) 
    

运行后加载它会抛出一个

缺少方法例外

它无法找到一个CSharpCompilationOptions的构造函数。我注意到,当我没有安装“Microsoft.CodeAnalysis.CSharp.Scripting”(在上面的例子中不需要)时,一切正常。我想Microsoft.CodeAnalysis.CSharp.Scripting的依赖关系之一会安装一些软件包。

我试图运行“Fuslogvw”,看看是否有任何绑定错误,但我找不到任何有用的东西。

任何想法?

更新 - 我使用Visual Studio 2015年更新3

更新2 我降级 “System.Collections.Immutable” 从1.2.0至37年1月1日,它再次工作。 更新3 我发现报告的bug: https://github.com/dotnet/roslyn/issues/12247

的问题是我需要使用1.2.0,因为罗斯林脚本API使用该版本。

+0

您使用的是哪个版本的Visual Studio 2015? – JoshVarty

+0

它是更新3.我可以准备一个示例来显示异常。它会有用吗? – user3733340

+0

不是绑定错误,因此您必须记录所有绑定。并且您必须查看devenv.exe.config,它是决定要使用哪些版本进行加载的因素,因为IDE也使用这些程序集。有点棘手,当几乎每一个更新会打破你的插件顺便说一句,你可能要等到Roslyn稳定了一下。一年或两年:) –

回答

0

如果您的打包版本是1.3.2,那意味着您的目标是Visual Studio 2015 Update 3,但是我猜测您没有安装它。降级到较旧的版本(如果您的目标是Update 2,则为1.2,如果目标为Update 1则为1.1),或者将您的VS升级到较新的版本。

+0

我使用VS 2015 Update 3。 – user3733340

1

对我来说,目前的解决方法是降级Microsoft.CodeAnalysis.Csharp.Scripting到与“System.Collections.Immutable 37年1月1日”

0

我能解决这个问题,安装Visual Studio 2017年的作品版本。VS 2017需要System.Collection.Immutable 1.2.1.0,与其他Roslyn版本不冲突