.net - 将解决方案更新到.net Framework 4.7 : issue with Roslyn

标签 .net nuget roslyn

我正在尝试将使用 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/

相关文章:

.net - RavenDB:如何进行简单的 map/reduce 聚合

c# - 查询不返回任何东西

.net - NuGet 用于多个项目的解决方案

c# - 如何从 Roslyn 中的 using 指令获取完全限定的命名空间?

c# - 检查 argumentSyntax 是否可以通过具有 IParameterSymbol 的方法调用

c# - 使用 Roslyn codefix 向方法参数添加属性

c# - 在 C# 解决方案中创建 PFX 文件

c# - TPL 强制更高的并行度

c# - UWP 上的“无法加载文件或程序集 System.IO.Compression”

.net - 为什么已安装的软件包不显示我刚刚安装的软件包?