MFC を使用していた頃は、マクロをチェックすることで MFC フレームワークの複数のバージョンをサポートできたことを思い出します_MFC_VER
。
私は現在、.NET 4 でいくつかの作業を行っており、いくつかの場所で Tuple を使用したいと考えていますが、他のすべては 3.5 と互換性のある状態を維持したいと考えています。
私は次のようなことをしたいと考えています:
#if DOTNET4
public Tuple<TSource, TResult> SomeMethod<TSource, TResult>(){...}
#else
public KeyValuePair<TSource, TResult> SomeMethod<TSource, TResult>(){...}
#endif
ベストアンサー1
.NET Core ビルド システムを使用している場合は、定義済みのシンボルを使用できます。
#if NET40
public Tuple<TSource, TResult> SomeMethod<TSource, TResult>(){...}
#else
public KeyValuePair<TSource, TResult> SomeMethod<TSource, TResult>(){...}
#endif
定義済みシンボルのリストは、クロスプラットフォームツールを使用したライブラリの開発そして#if (C# リファレンス):
。ネットフレームワーク:
NETFRAMEWORK
、、、、、、、、、、、、、、、、、NET48
NET472
NET471
NET47
NET462
NET461
NET46
NET452
NET451
NET45
NET40
NET35
NET20
.NET 標準:
NETSTANDARD
、、、、、、、、、、、、NETSTANDARD2_1
NETSTANDARD2_0
NETSTANDARD1_6
NETSTANDARD1_5
NETSTANDARD1_4
NETSTANDARD1_3
NETSTANDARD1_2
NETSTANDARD1_1
NETSTANDARD1_0
.NET 5+ (および .NET Core):
NET
、、、、、、、、、、、、、、、、、、、、、NET6_0
NET6_0_ANDROID
NET6_0_IOS
NET6_0_MACOS
NET6_0_MACCATALYST
NET6_0_TVOS
NET6_0_WINDOWS
NET5_0
NETCOREAPP
NETCOREAPP3_1
NETCOREAPP3_0
NETCOREAPP2_2
NETCOREAPP2_1
NETCOREAPP2_0
NETCOREAPP1_1
NETCOREAPP1_0