首页 > 解决方案 > 如何多目标 C# 类库以同时支持 NET_STANDARD 和 NET_COREAPP?

问题描述

我有一个当前是多目标的类库,NET40并且NETSTANDARD2.0

<TargetFrameworks>net40;netstandard2.0</TargetFrameworks>

NETCOREAPP2.1但是,我现在还需要支持一些新的 api,这些新 api是作为netstandard.

我最初的想法是简单地扩展当前框架以包括NETCOREAPP2.1

<TargetFrameworks>net40;netstandard2.0;netcoreapp2.1</TargetFrameworks>

<PropertyGroup Condition=" '$(TargetFramework)' == 'netcoreapp2.1'">
    <DefineConstants>NETCORE</DefineConstants> 
</PropertyGroup>

在代码中我可以像这样使用新添加的 API:

#if NETCORE
    // Use the api added in NETCORE 2.1
#endif

但是,一旦在面向更高版本.NET Core的应用程序中使用该库后会发生什么?例如.NET Core 2.2?我必须为每个新发布的版本创建新的常量吗?

在理想的世界NETCOREAPP2.1中会实施NETSTANDARD2.1,但不幸的是事实并非如此。

标签: c#.net.net-coremultitargeting

解决方案


只需创建一个 .net 标准 2.0 库。此库可供 .net (>= 4.6.1) 或核心 (>= 2.0) 应用程序使用。保证了库的向下兼容性。

https://docs.microsoft.com/en-us/dotnet/standard/net-standard#net-platforms-support


推荐阅读