【问题标题】:Updating solution to .net framework 4.7: issue with Roslyn将解决方案更新到 .net 框架 4.7:Roslyn 的问题
【发布时间】:2017-05-30 00:13:09
【问题描述】:

我正在尝试将使用 roslyn 的解决方案更新到 4.7。 更新 nuget 包时出现以下错误:

在现有 packages.config 文件中检测到一个或多个未解决的包依赖关系约束。必须解决所有依赖约束才能添加或更新包。如果正在更新这些包,则可能会忽略此消息,否则可能会出现以下错误阻止当前包操作:'System.Security.Cryptography.Algorithms 4.3.0 约束:System.IO (>= 4.3.0 )'

然后,在尝试使用 Roslyn 时,运行以下代码时出现异常:

var compilation = CSharpCompilation.Create("MyCompilation", new[] {syntaxTree}, references);
var diag = compilation.GetDiagnostics();

例外是:

发生托管调试助手“BindingFailure” H结果=0x00000000 Message=Managed Debugging Assistant 'BindingFailure' : '显示名称为 'System.Security.Cryptography.Algorithms' 的程序集未能加载到 ID 为 1 的 AppDomain 的 'LoadFrom' 绑定上下文中。原因失败的原因是:System.IO.FileLoadException:无法加载文件或程序集“System.Security.Cryptography.Algorithms,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (来自 HRESULT 的异常:0x80131040)'

知道如何解决吗?

【问题讨论】:

    标签: .net nuget roslyn


    【解决方案1】:

    原来问题出在依赖程序集重定向上。 看起来 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 文件中似乎已经做到了。

    【讨论】:

      【解决方案2】:

      您可能希望向我们展示 packages.config 文件的内容。 从外观上看,您需要将 System.IO 升级到 4.3.0 或更高版本,因为 System.Security.Cryptography.Algorithms 需要它。

      【讨论】:

        猜你喜欢
        • 2018-07-16
        • 2019-07-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多