roslyn 依赖是 MissingMethodException [英] roslyn dependenceis MissingMethodException

查看:38
本文介绍了roslyn 依赖是 MissingMethodException的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在升级项目中的依赖项后,roslyn 编译器开始在以下代码中抛出缺少方法异常,更新前有效:

After upgrading the dependencies in project roslyn compiler started to throw missing method exception in the following code that before update worked:

CSharpCompilation compilation = CreateCompilation(templateId, syntaxTrees, metadataReferences);

EmitResult compileResult;
generatedAssembly = string.Empty;

using (var stream = new MemoryStream())
{
    compileResult = compilation.Emit(stream);

现在它抛出 MissingMethod 异常:

Now its throwing MissingMethod exception:

System.MissingMethodException
Method not found: 'System.Collections.Immutable.ImmutableArray`1<Microsoft.CodeAnalysis.Diagnostic> Microsoft.CodeAnalysis.Emit.EmitResult.get_Diagnostics()'.

所有依赖项都更新为当前最新版本:

All the dependencies are updated to current latest versions:

  <package id="Microsoft.Bcl.Build" version="1.0.21" targetFramework="net461" />
  <package id="Microsoft.CodeAnalysis.Analyzers" version="1.1.0" targetFramework="net461" />
  <package id="Microsoft.CodeAnalysis.Common" version="1.3.2" targetFramework="net461" />
<package id="Microsoft.CodeAnalysis.CSharp" version="1.3.2" targetFramework="net461" />
<package id="System.Collections.Immutable" version="1.2.0" targetFramework="net461" />

fds

推荐答案

问题是由 this 引起的roslyn 中的错误,因此添加程序集重定向有帮助:

The issue was caused by this bug in roslyn, so adding an assembly redirects helped:

  <dependentAssembly>
    <assemblyIdentity name="System.Collections.Immutable" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-1.1.37.0" newVersion="1.1.37.0" />
  </dependentAssembly>

但应用仍然使用 1.2.0.0 版本的不可变集合

but the app still uses 1.2.0.0 version of Immutable collections

这篇关于roslyn 依赖是 MissingMethodException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆