【问题标题】:Can I use a .NET Standard 2.0 package in a classic .NET 4.6.1 application?我可以在经典的 .NET 4.6.1 应用程序中使用 .NET Standard 2.0 包吗?
【发布时间】:2017-10-03 16:22:51
【问题描述】:

我有点困惑如何在 .net core.net-framework 应用程序之间共享 .net-standard 2 nuget 包.例如,我创建了 .net-standard 2.0 包,只有<TargetFramework>netstandard2.0</TargetFramework>。所以我在包中只有../libs/netstandard2.0 文件夹。我可以将它按原样安装到 .net-framework 4.6.1 中吗?申请(根据compatibility matrix我可以)?或者我应该让这个包多目标<TargetFrameworks>netstandard2.0;net461</TargetFrameworks>?这里有什么优势?

【问题讨论】:

    标签: c# .net .net-standard-2.0


    【解决方案1】:

    是的,确实如此。您可以只从 .NET Framework 4.6.1 项目中引用 .NET Standard 2.0 包(较低的框架版本不适用于 .NET Standard 2.0)。无需单独的目标或重建。

    另请阅读Referencing .NET Standard Assemblies from both .NET Core and .NET Framework

    关于使用多目标的好处:除非您需要,否则没有任何好处。怎么可能是这样的情况?根据the documentation

    当您的项目同时支持 .NET Framework 和 .NET Core 时,您可能需要针对旧版本的 .NET Framework。在这种情况下,如果您想为更新的目标使用更新的 API 和语言结构,请在代码中使用 #if 指令。您可能还需要为每个目标平台添加不同的包和依赖项,以包含每种情况所需的不同 API。

    因此,只有在代码或引用不兼容时才真正需要它。如果你没有这个问题,你就不需要多目标。

    有一个示例给出了如何根据构建目标包含引用,这可能会提供一些见解:

    <ItemGroup Condition="'$(TargetFramework)' == 'net40'">
      <Reference Include="System.Net" />
    </ItemGroup>
    

    【讨论】:

      猜你喜欢
      • 2019-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多