. NET Стандартный 2.1 добавляет IAsyncDisposable
. Я могу использовать это в ORM API:
public partial class MyDbContext : IAsyncDisposable
{
public async ValueTask DisposeAsync()
{
if (Connection != null)
await Connection.DisposeAsync();
}
}
… но многие из моих пользователей все еще используют NET Standard 2.0. Знаю, добавлю символы препроцессора!
#if NETSTANDARD2_1
…
#endif
Но нет. A. NET Приложение Core 3.0 на самом деле не устанавливает NETSTANDARD2_1
. Так что я могу изменить его на #if NETSTANDARD2_1 || NETCOREAPP3_0 || NETCOREAPP3_1
, но теперь мой код сломается один раз. NET 5 отправлено. И снова, когда. NET 6 будет отправлен годом позже.
NETCOREAPP
сам по себе тоже, вероятно, не работает:. NET Core 2.2 и ниже не поддерживают IAsyncDisposable
.
TL; DR: как мне запросить «if. NET Standard 2.1 или. NET Core 3.0 или новее »?
(изменить) Это сгенерированный исходный код, поэтому я не могу получить доступ к таким вещам, как MSBuild. Это должен быть способ, работающий изнутри C#.