我试图在运行时使用Roslyn编译.cs文件。我相信我已经使用所需的nuget包配置错误。
System.IO.FileLoadException: Could not load file or assembly
'System.Reflection.Metadata, Version=1.2.0.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies.
The located assembly's manifest definition does not match the assemblyreference. (Exception from HRESULT: 0x80131040)
File name: 'System.Reflection.Metadata, Version=1.2.0.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a'
=== Pre-bind state information ===
LOG: DisplayName = System.Reflection.Metadata, Version=1.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
(Fully-specified)
LOG: Initial PrivatePath = NULL
Calling assembly : Microsoft.CodeAnalysis.CSharp, Version=1.3.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35.
===
LOG: This bind starts in default load context.
LOG: Using host configuration file:
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Post-policy reference: System.Reflection.Metadata, Version=1.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
LOG: Attempting download of new URL System.Reflection.Metadata.DLL.
WRN: Comparing the assembly name resulted in the mismatch: Minor Version
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.
Project References下列出的System.Reflection.Metadata版本的版本为1.3.0.0
我通过nuget控制台执行以下操作来安装Roslyn以供使用:
install-package Microsoft.Net.Compilers
install-package Microsoft.CodeAnalysis
尝试在被调用方法中调用任何基于Roslyn的方法会导致异常。
通过上述方法安装的Microsoft.CodeAnalysis.CSharp版本为1.3.2:https://www.nuget.org/packages/Microsoft.CodeAnalysis.CSharp/
其中需要相同版本的:https://www.nuget.org/packages/Microsoft.CodeAnalysis.Common/
反过来又需要System.Reflection.Metadata> = 1.3.0
这些对System.Reflection.Metadata 1.2.0.0的引用来自何处以及如何让我的项目恢复正常工作?
我因为这么多原因而对此感到困惑:
我已经卸载并重新安装了Microsoft.CodeAnalysis.CSharp并且它的依赖项无数次,并且错误仍然存在。
非常感谢任何帮助。
答案 0 :(得分:0)
我解决了这个问题。
Install-Package Microsoft.CodeAnalysis -Version 1.3.2
似乎已经安装了CodeAnalysis 1.3.1,尽管在解决方案浏览器中将其版本化为1.3.2。