3

2.0 と 4.0 の両方の .NET 用にコンパイルできる .NET プロジェクトを (C# で) 作成することは可能ですか? はいの場合はどうすればよいですか?

必要なもの:

C# 4.0 で利用可能ないくつかの機能を含むプロジェクトを作成したいのですが、これらの機能の使用はオプションです。プロジェクトが .NET 4.0 用にコンパイルされている場合、機能はアクティブであり、コンパイルされています。2.0 用にコンパイルすると、機能は無効になり、省略されます。

つまり、VS で「ビルド」ボタンをクリックすると、2.0 と 4.0 の両方でプロジェクトがビルドされ、個別のアセンブリと実行可能ファイルが作成されます。

この要件を満たすためにプロジェクトとコードを構成するにはどうすればよいですか?

4

3 に答える 3

1

これを行う方法は です#define。2 つの C# プロジェクトがあります。1 つは Assembly-2.csproj という名前で、もう 1 つは Assembly-4.csproj という名前です。-2 プロジェクトには という名前の条件付きコンパイル シンボル(これはビルドプロジェクト設定に保存されます) がNET2あり、-4 プロジェクトには という名前の 1 つがありNET4ます。次に、コードで次のことを行います。

#if NET2
public static void MyExtensionMethod(string self)
#else
public static void MyExtensionMethod(this string self)
#endif
{
    // ...

このメカニズムを使用する場合は、必ずApplication内のアセンブリ名を変更してください。この場合、アセンブリを resp と呼びます。Assembly-2Assembly-4。この手順をスキップすることもできますが、アセンブリに別の名前が付けられていて、その名前が対象のフレームワークのバージョンを示している場合、アセンブリを実際に管理する方がはるかに簡単だと思います。

于 2013-06-26T11:18:55.750 に答える
0

.Net 2.0 を使用している場合、新しいバージョンには古いバージョンが既に含まれているため (ただし、関数のバグは削除されていません)、他のバージョン (3.5、4.0、4.5) でコードをコンパイルできます。

編集:しかし、.Net 4.0 を使用する場合、2.0 のような古いバージョンではコンパイルできません。これは、4.0 の特定の関数の一部が 2.0 で利用できないためです...

于 2013-06-26T10:45:06.553 に答える