2013-12-09 20 views
6

私はC#/ .NETでクラスライブラリを作成しています。あるプロジェクトのソースファイルを別のプロジェクトに組み込むには?

私は2つの異なるフレームワークのためにそれをコンパイルする必要があります。

  • 4.0(自分自身をデバッグするために使用して)
  • 3.5(クライアント上で使用して)。

2つのプロジェクトのソースファイルを1つセットしたいので、1つのファイルに修正を加え、他のプロジェクトに自動的に含めます。

「既存のアイテムを追加」を使用する場合でも、VS 2010はコピーを作成します。毎回最新バージョンをコピーする必要があります。

異なるバージョンの.dll参照を使用しているため、また、ms vsにいくつかの癖があるため、プロジェクト内のターゲットを変更することはできません。

答えて

6

一つの選択肢はがリンクとしてすでに他の人が言及したオプションを追加していますが、それより多くのオプションを持って使用することです:

  1. Portable Class Librariesは許可プロジェクトの特別な種類ですターゲットとする.NETのバージョンを指定します。コンパイラは、それぞれのアセンブリを出力します。この手法の利点は、両方のフレームワークにコンパイルするソースの1つのバージョンがあることです。欠点は、最小の共通要素である.NET Frameworkがサポートしていない機能を使用できないことです。
  2. ソース管理ブランチ&をマージすると、2つの同様のソースファイルを実際に維持することができます。マスターバージョンの1つのバージョンがあり、変更を適用した後、実際の出力を生成するプロジェクトにマージします。この手法の利点は、完全に別々のファイルを2つ持つことができるため、自由度が高いことです。欠点は、完全に別々のファイルが2つあり、管理が難しいことです。
  3. MsBuildのトリッキーなことをよくしてください。 <choose>/<when>コンストラクトを使用すると、条件に応じて特定のアセンブリバージョンへの参照を条件付きで含めることができます。ターゲットフレームワークのバージョンやその他の設定は、MsBuildを使用して管理することもできますが、UIでこれらの設定を編集することはできません。これを#if MY_CONSTANTと組み合わせて使用​​すると、アプリケーションの条件付きでコンパイルされた部分を作成できます。
  4. 両方のプロジェクトから参照する.NETアセンブリを作成できます。あなたの場合、.NETバージョンを最低バージョン3.5に設定します。 Visual Studio 2010以降にはマルチターゲットがサポートされており、.NET Frameworkのバージョンを1つのソリューションに混在させることができます。

どのような種類のプロジェクトに参加していますか?プロジェクトファイルを共有すると、そのプロジェクトファイルを解決できます。

5

Add as Link機能を使用できます。

それはこのように書き:

  • 右クリックし、あなたの(既存の)必要な場所が
  • 「追加」するファイル - あなたのファイルを選択>「既存項目の」
  • 、矢印をクリックしてくださいボタンを「追加」と「リンクに追加」を選択した上で
  • ファイルへのリンクではなくコピーのプロジェクトに追加されます(下のスクリーンショットを参照)

Screenshot

3

プロジェクトにファイルを追加するときは、「リンクとして追加」を選択するだけでなく、追加します。

Add as link