我有一个类库,该类库当前是多目标NET40
和NETSTANDARD2.0
:
<TargetFrameworks>net40;netstandard2.0</TargetFrameworks>
但是,我现在还需要支持一些新的api,这些新的api是NETCOREAPP2.1
的一部分,但未被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
,但不幸的是THIS并非如此。
答案 0 :(得分:0)
just create a .net standard 2.0 library. this lib can be used by .net (>= 4.6.1) or core (>= 2.0) applications. the downwards compatibility of an lib is guaranteed.
https://docs.microsoft.com/en-us/dotnet/standard/net-standard#net-platforms-support
答案 1 :(得分:0)
您可以在条件内使用.Net字符串方法:
<PropertyGroup Condition="$(TargetFramework.StartsWith('netcore'))">
<DefineConstants>NETCORE</DefineConstants>
</PropertyGroup>