1

いくつかのプロジェクトを含むソリューションがあります。テストプロジェクトの1つは、依存関係のために.NET4.0を使用しています。ビルドしたいデプロイ可能なプロジェクトは、.NET3.5コンパイラを対象としています。現在のビルドスクリプトは、プロジェクトごとにさまざまな.NETコンパイラをターゲットにするほどきめ細かいものではありません。基本的に、ソリューション内のプロジェクトごとに1つのコンパイラしか使用できません。

.NET 4.0コンパイラは3.5コードをコンパイルするのに十分賢いですか?

ソリューションの構造

  • Project 1 .NET 3.5(デプロイ可能)
  • Project 2 .NET 4.0(自動ビルドサイクルでのテストに使用)

注:自動ビルドサーバーはプロジェクト2で単体テストを実行するため、プロジェクト2を無視することはできません。ビルドが成功する前に、すべてのテストに合格する必要があります。

編集:

VisualStudio内でこのコードをコンパイルしていません。VisualStudioの外部で実行されるカスタムビルドスクリプトがあります。1つの.NETコンパイラを使用するのに十分賢いだけです。このコンパイラを使用して、特定のソリューションのすべてのプロジェクトをコンパイルします。ビルドスクリプトは、プロジェクトが3.5または4.0に対してコンパイルされるように定義されているかどうかを気にしません。代わりに、定義されたコンパイラでそれらをコンパイルします。

プロジェクト1はプロジェクト2を参照していません。プロジェクト2は、単体テストを含むプロジェクトです。自動ビルドツールは、テストを実行するためにのみプロジェクト2をコンパイルします。

4

3 に答える 3

3

編集

Opは、質問が次のようなコメントであることを明確にしました

4.0コンパイラは3.5プロジェクトをコンパイルできますか

答えは「はい」です。これは非常に可能です。

于 2010-10-27T19:27:37.990 に答える
2

ソリューション エクスプローラーで "Project 1" プロジェクトを右クリックします。次に、[プロパティ] をクリックします (ホット キーは ALT+Enter です)。アプリケーション タブの下に、[ターゲット フレームワーク] ドロップダウンがあります。それを 3.5 に設定します。

コンパイルするときは (コマンド ラインを使用しているように聞こえます)、MSBuildを使用し、ターゲット フレームワークのバージョンを指定しません。ソリューション ファイルをコンパイルするだけで、すべてのプロジェクトが適切にコンパイルされます。

于 2010-10-27T19:29:11.467 に答える
0

使用しているライブラリの種類によっては、問題が発生する可能性があります。特に、4.0で実装された3.5には存在しなかった名前空間/クラス名に問題がありました。

ソリューションの一部としてNHibernateソースコードをコンパイルするなどの難解なことをしている場合は、問題が発生します。そうでなければ、名前空間を踏んでいないのであれば、3.5プロジェクトを4.0にコンパイルするのに問題はないはずです。

ボブの答えを取ることの何が問題になっていますか?カスタムビルドソリューション(つまり、Visual Studioではない)を使用していますか?

于 2010-10-27T19:35:32.340 に答える