我试图添加一个完整的框架类库作为asp.net core 2.0 MVC项目的项目引用,并获得以下错误。
Project XYZ is not compatible with netcoreapp2.0 (.NETCoreApp,Version=v2.0).
Project XYZ supports: net462 (.NETFramework,Version=v4.6.2)
我已更新到Visual Studio的最新版本,即15.3.5。 甚至可以在核心2.0项目中引用4.6.2库吗?
答案 0 :(得分:2)
您可以尝试的第一件事是将要使用的库编译为netstandard2.0
。
从理论上讲(根据.net standard documentation),这将使其与使用net461和更高版本以及netcoreapp2.0和更高版本的项目兼容。
在实践中,有时您会遇到一个问题,那就是您的一个依赖项无法在不同的编译目标中提供相同的库版本。
在这种情况下,您可能只需要添加.net core 2.0作为XYZ库的目标框架。
列出目标的xml标记位于XYZ.csproj文件中的<TargetFrameworks>
中,而不由项目属性的Gui处理。
因此,我将尝试手动编辑XYZ.csproj,并使用netcoreapp2.0添加或替换<TargetFrameworks>
中列出的内容。
如果要将其添加为其他目标,则需要将它们用';'分隔。就像
<TargetFrameworks>net462;netstandard2.0;netcoreapp2.0</TargetFrameworks>
此Microsoft doc中对此有更多详细信息。
请记住,这将触发多个编译并因此减慢您的构建速度。
答案 1 :(得分:1)
它应该。 Microsoft announced与.NET Standard 2.0一起发布的“.NET Framework兼容模式”。但是,他们没有详细说明它是如何正常工作的,或者如果不能解决什么问题。另外,他们只是与Nuget包有关的具体谈论,所以Nuget在这个过程中也可能扮演一些角色。很遗憾,我一直无法在公告发布之外找到有关此功能的任何其他信息。
也就是说,微软的明确建议是不要依赖.NET Framework库可能恰好在.NET Core中运行的事实;相反,您应该主动将您控制的.NET Framework库移植到.NET Standard。我会说你可能会花更多的时间来弄清楚它为什么不“只是工作”而不是你移植你的代码,这样它肯定会起作用,并且可以防范未来。