异常:“System.Reflection.Metadata”已拥有为“System.Collections.Immutable”定义的依赖项

时间:2021-07-24 09:57:55

参考动态执行T4模板:https://msdn.microsoft.com/zh-cn/library/bb126579.aspx

我项目是.NET Framework 4.5控制台应用程序写的。

执行用例提示报错:Microsoft.CodeAnalysis未引用,如图截图

异常:“System.Reflection.Metadata”已拥有为“System.Collections.Immutable”定义的依赖项

项目引用的Microsoft.VisualStudio.TextTemplating.14.0 版本是14.3.25407

在Nuget官网上只找到 Microsoft.CodeAnalysis版本为1.3.0-beta1-20160429-01,不知道是不是错误提示要求的Version=1.3.0.0版

Nuget执行:Install-Package Microsoft.CodeAnalysis  —Version 1.3.0-beta1-20160429-01

结果还是提示错误:“System.Reflection.Metadata”已拥有为“System.Collections.Immutable”定义的依赖项。

最终降版本解决:

Install-Package System.Collections.Immutable -Version 1.1.37

Install-Package System.Reflection.Metadata -Version 1.0.21

Install-Package  Microsoft.CodeAnalysis -Version 1.0.0

Install-Package Microsoft.VisualStudio.TextTemplating.14.0 -Version 14.0.23205

由此可见,在开发过程中使用Nuget导入引用包,默认情况下是导入最新的包,然而,最新的包有可能存在版本兼容的问题,所以开发过程要注意引用包的版本号。