将.NET Framework 4.6.2类库转换为.NET Core类库的目标

10

我有一个使用.NET Core编写的库,目标是.netstandard2.0。根据这个网站,使用.NET 4.6.2和4.6.1版本的.NET Core库应该是兼容的。然而,当我尝试构建我的.NET Framework库时,我收到以下错误:

项目“c:\ myproj.csproj”的目标为“‘.NETStandard,Version=v2.0’”。无法由目标“‘.NETFramework,Version=v4.6.2’”的项目引用。

我正在使用Visual Studio 2017构建这些库。我所做的不可能/不支持吗?我是否误解了网站上的信息?NET Framework库正在引用System.Management.Automation,并且是PowerShell模块,但还引用.NET core库中用于其他项目的代码。


1
https://dev59.com/XlgQ5IYBdhLWcg3wxGvs#42364427 - meziantou
2个回答

9
我通过将以下内容放置在标签中解决了这个问题:
    <TargetFrameworks>netstandard2.0;net462</TargetFrameworks>
    <TargetFrameworkIdentifier Condition="'$(_ShortFrameworkIdentifier)'=='net'">.NETFramework</TargetFrameworkIdentifier>
    <TargetFrameworkIdentifier Condition="'$(_ShortFrameworkIdentifier)'=='netstandard'">.NETStandard</TargetFrameworkIdentifier>

这使我能够构建引用.NET核心项目的.NET Framework类库。这不是文档所期望的,因为它让人觉得.netstandard是新的PCL,但它确实起作用。

你把它放在哪个“标签”里了?那在哪里? - mcmillab
在 csproj 文件中,位于 <Project Sdk="Microsoft.NET.Sdk"><PropertyGroup> 下面。您应该在 xml 中看到一个现有的 TargetFramework。 - mhaken
@mhakan 谢谢,这个方法可行。为了让其他人更清楚,这是在 dotnetCore 库的 csproj 文件中进行的操作,它替换了现有的 TargetFrameworks 行。 - mcmillab

0

目前为止,VS 2017不直接支持每日构建/预览2.0工具。与VS 2017(15.0、15.1)捆绑的SDK不支持netstandard 2.0,集成的NuGet扩展也不支持。

请参见https://github.com/aspnet/Announcements/issues/231,了解在当前发布的VS 2017版本中使用预览工具的一些解决方法。


我在针对netstandard1.6和netstandard1.5时也遇到了同样的问题,所以我认为这并不一定是特定于2.0的。我尝试使用类库来针对1.6,得到了“项目'C:\ myproj.csproj'的目标是'.NETStandard,Version = v1.6'。它不能被一个目标为'.NETFramework,Version = v4.6.2'的项目引用。” - mhaken
这是因为4.6.2不支持使用已发布的工具(1.0.*)使用1.6库。 - Martin Ullrich
使用 .netstandard1.5 也得到了相同的结果,而该网站表示它与4.6.2兼容。 - mhaken

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