本文介绍了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
发布评论