我正在尝试将使用 roslyn 的解决方案更新到 4.7。 更新 nuget 包时出现以下错误:
One or more unresolved package dependency constraints detected in the existing packages.config file. All dependency constraints must be resolved to add or update packages. If these packages are being updated this message may be ignored, if not the following error(s) may be blocking the current package operation: 'System.Security.Cryptography.Algorithms 4.3.0 constraint: System.IO (>= 4.3.0)'
然后,当尝试使用 Roslyn 时,我在运行以下代码时遇到异常:
var compilation = CSharpCompilation.Create("MyCompilation", new[] {syntaxTree}, references);
var diag = compilation.GetDiagnostics();
异常(exception)是:
Managed Debugging Assistant 'BindingFailure' occurred HResult=0x00000000 Message=Managed Debugging Assistant 'BindingFailure' : 'The assembly with display name 'System.Security.Cryptography.Algorithms' failed to load in the 'LoadFrom' binding context of the AppDomain with ID 1. The cause of the failure was: System.IO.FileLoadException: Could not load file or assembly 'System.Security.Cryptography.Algorithms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)'
知道如何修复吗?
最佳答案
事实证明问题出在依赖程序集重定向上。 看起来 VS2017 在我的 app.config 文件中添加了很多这些内容。
改变:
<dependentAssembly>
<assemblyIdentity name="System.Security.Cryptography.Algorithms" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.1.0" newVersion="4.2.1.0" />
</dependentAssembly>
这样:
<dependentAssembly>
<assemblyIdentity name="System.Security.Cryptography.Algorithms" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.1.0" newVersion="4.1.0.0" />
</dependentAssembly>
在我的主项目 app.config 文件中似乎已经完成了。
关于.net - 将解决方案更新到.net Framework 4.7 : issue with Roslyn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44029506/