У меня есть библиотека классов, в которой в настоящее время используется многоцелевой NET40
и NETSTANDARD2.0
:
<TargetFrameworks>net40;netstandard2.0</TargetFrameworks>
Однако теперь мне нужно также поддерживать некоторые новые 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
, но, к сожалению ЭТО не так.