.NET Framework バージョンに条件付きでコンパイルすることは可能ですか? 質問する

.NET Framework バージョンに条件付きでコンパイルすることは可能ですか? 質問する

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、、、、、、、、、、、、、、、、、NET48NET472NET471NET47NET462NET461NET46NET452NET451NET45NET40NET35NET20

.NET 標準: NETSTANDARD、、、、、、、、、、、、NETSTANDARD2_1NETSTANDARD2_0NETSTANDARD1_6NETSTANDARD1_5NETSTANDARD1_4NETSTANDARD1_3NETSTANDARD1_2NETSTANDARD1_1NETSTANDARD1_0

.NET 5+ (および .NET Core): NET、、、、、、、、、、、、、、、、、、、、、NET6_0NET6_0_ANDROIDNET6_0_IOSNET6_0_MACOSNET6_0_MACCATALYSTNET6_0_TVOSNET6_0_WINDOWSNET5_0NETCOREAPPNETCOREAPP3_1NETCOREAPP3_0NETCOREAPP2_2NETCOREAPP2_1NETCOREAPP2_0NETCOREAPP1_1NETCOREAPP1_0

おすすめ記事