【问题标题】:Target .NET Core Class Library From .NET Framework 4.6.2 Class Library来自 .NET Framework 4.6.2 类库的目标 .NET Core 类库
【发布时间】:2017-09-15 19:50:29
【问题描述】:

我有一个使用 .NET Core 编写的库,目标是 .netstandard2.0。根据这个site,它应该兼容使用.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 核心库中的代码。

【问题讨论】:

标签: c# .net .net-core .net-4.6.2


【解决方案1】:

我通过将它放在标签中解决了这个问题:

    <TargetFrameworks>netstandard2.0;net462</TargetFrameworks>
    <TargetFrameworkIdentifier Condition="'$(_ShortFrameworkIdentifier)'=='net'">.NETFramework</TargetFrameworkIdentifier>
    <TargetFrameworkIdentifier Condition="'$(_ShortFrameworkIdentifier)'=='netstandard'">.NETStandard</TargetFrameworkIdentifier>

这使我能够构建引用 .NET 核心项目的 .NET Framework 类库。不是我对文档的期望,因为它使 .netstandard 看起来像是新的 PCL,但它确实有效。

【讨论】:

  • 你把它放进了什么“标签”?那是哪里?
  • @mcmillab 在 csproj 文件中取消了 。您应该在 xml 中看到现有的 TargetFramework。
  • @mhakan 谢谢你的工作。对于其他人来说,这是在 dotnetCore 库的 csproj 文件中,它替换了现有的 TargetFrameworks 行。
【解决方案2】:

在撰写本文时,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 的类库,并获得了 Project 'C:\myproj.csproj' 目标 '.NETStandard,Version=v1.6'。它不能被以 '.NETFramework,Version=v4.6.2' 为目标的项目引用。
  • 这是因为 4.6.2 不支持使用已发布工具 (1.0.*) 的 1.6 库
  • 与 .netstandard1.5 的结果相同,网站称 4.6.2 支持。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-23
  • 1970-01-01
  • 2017-02-11
  • 2021-11-05
  • 2017-08-13
相关资源
最近更新 更多