项目不兼容netcoreapp2.0。

7
我正在尝试将一个完整的框架类库添加为项目引用到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。 在Core 2.0项目中引用4.6.2库是否可行?


根据Microsoft的说法,与.NET Core 2.0兼容的最新版本的.NET Framework是4.6.1。 - jtmaher2
1
你读表格的方式不对。4.6.1是使用.NET Standard 2.0所需的最低版本,而不是反过来。 - Chris Pratt
3个回答

4
你可以尝试的第一件事是将你想使用的库编译为netstandard2.0。理论上来说(根据.net标准文档),这将使它与使用net461及更高版本以及netcoreapp2.0及更高版本的项目兼容。
实际上,有时你会遇到一个问题,即你的某个依赖项在不同的编译目标上没有提供相同的库版本。
在这种情况下,你可能只需要将.net core 2.0添加为XYZ库的目标框架。
列出目标的xml标签是XYZ.csproj文件中的<TargetFrameworks>,并且不受项目属性的Gui处理。
所以我建议手动编辑XYZ.csproj,并将列为<TargetFrameworks>的内容添加或替换为netcoreapp2.0。
如果你要添加它作为额外的目标,你需要用';'分隔它们,如:
<TargetFrameworks>net462;netstandard2.0;netcoreapp2.0</TargetFrameworks>

有关此更多详细信息,请参阅Microsoft文档


请记住,这将触发多次编译,因此会减慢构建速度...

1
它应该是可以的。微软在发布.NET Standard 2.0时宣布了“ .NET Framework 兼容性模式”。但是,他们没有详细说明它的工作原理,或者如果出现问题应该如何解决。此外,他们只在与Nuget包相关的情况下具体讨论它,因此可能有一些Nuget在其中发挥作用。不幸的是,我无法在公告之外找到有关此功能的其他信息。
话虽如此,微软的明确建议是不要依赖于您的.NET Framework库恰好可以在.NET Core中工作的事实;相反,您应该积极将您控制的.NET Framework库移植到.NET Standard。我认为您很可能会花费更多时间来弄清楚为什么它不能“正常工作”,而不是移植您的代码,以确保它肯定能够工作,并且未来也能兼容。

0
以下解决方案适用于我。
从解决方案中删除所有项目的bin和obj文件夹,重新构建。如果仍然无法解决问题,请尝试从调试选项更改浏览器。例如,如果您已经将Chrome设置为Visual Studio中的默认浏览器,请切换到Edge或Firefox。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接