1

我有一个当前是多目标的类库,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,但不幸的是事实并非如此。

4

2 回答 2

0

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

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

于 2019-01-07T13:47:30.457 回答
0

您可以在您的条件中使用 .Net 字符串方法:

<PropertyGroup Condition="$(TargetFramework.StartsWith('netcore'))">
    <DefineConstants>NETCORE</DefineConstants> 
</PropertyGroup>
于 2019-04-22T17:05:16.860 回答