2017-01-27 21 views
0

4.5をターゲットとするクラスライブラリ(ProjectA)があります。必ずしも4.5固有の機能を使用するとは限りません。私は4.0と4.5のアセンブリをビルドする必要があります。両方のアセンブリバージョン(4.0 + 4.5)を持つ単一のNuGetパッケージを作成する必要があります。 4.5をターゲットとする別のクラスライブラリ(ProjectB)によって消費されます。.NET 4と45のプロジェクト間のシームレスなNuGetバージョンの統合

同じことをProjectBで行い(4.0と4.5の出力アセンブリをビルドする)、両方をサポートする単一のNuGetパッケージを作成する必要があります。

は、私は両方PROJECTAとProjectBのプロジェクトに4.0のための追加的なビルド構成を追加しました:

enter image description here

がProjectBのは、私も使用されている.nuspecファイルに追加の依存関係やファイルを追加しましたPROJECTAからNuGetのdependecyを定義するには:

enter image description here

PROJECTAはうまく構築し、上のバイナリ(4.0用との両方を持っているNuGetの.nupkgを生成しますeは4.5)。 ProjectBがProjectAを使用すると、ProjectAから4.5アセンブリが取り込まれます。 ProjectBがそれ自身のアセンブリの4.5バージョンをコンパイルすると、すべて正常です。

ここでは物事が厄介になる。 ProjectBを4.0ビルド構成に切り替えると、ProjectAへの参照が4.5で、ProjectBのビルド構成4.0でビルドできないというVisual Studioが表示されます。

ビルド構成がProjectBで4.0に変更されたときに、ProjectAから4.0アセンブリを自動的に使用するようにVisual Studioを設定します。

4.5から4.0にダウングレードして、すべてをよりシームレスにすることはできません。最終的に、ProjectCは両方のライブラリ4.0アセンブリを使用します。 ProjectCは4.0をターゲットとしており変更できません。

ProjectBがどのビルド構成を使用しているかに応じて、ProjectBがProjectAから適切なアセンブリ(4.0/4.5)を使用するように、ProjectBをProjectAで使用する方法を教えてください。

+2

あなたは、2つの異なる構成、.NET 4.0用と.NET 4.5のための1つを作成してみてください、その後、csprojに条件付きの参照を使用することができます。例:http://stackoverflow.com/questions/6523008/visual-studio-2010-conditional-references – MistyK

+0

@Zbigniewありがとう。あなたのコメントはすごく助けになりました。 2つの異なる参考文献を作成しなければならないことも分かっていなければなりませんでした。私はあなたのコメントをupvoted。これを詳細として回答として提出すれば(私のものを盗むのは自由です)、私はあなたの答えを記入してうれしいです。 –

+0

問題はありませんが、すべての詳細が含まれているので、回答を回答としてマークします。 – MistyK

答えて

1

数時間の研究を経て、仕事の仲間(@zbigiewのコメント)にアクセスした後、私はProjectBのプロジェクトファイルを更新する必要があると判断しました。実際には、ProjectAのバイナリ(4.0/4.5)に対するの2つの異なる/別々の参照のために、プロジェクトファイルのCONDITIONALステートメントに基づいてどのリファレンスを使用するかをプロジェクトに知らせなければなりませんでした()。

このセクションは、プロジェクトに関連付けられている参照を定義するのに役立ちます。さまざまな条件によって、それ自体をオプションにすることができます。私の場合、ビルド構成が "Release40"であれば、4.0から4.0アセンブリを使用すると言う条件を設定しなければなりませんでした。また、別の参考資料では、ビルド構成が「リリース」の場合、別のバージョンから4.5アセンブリを使用します。

enter image description here

+0

あなたがこの問題を解決したことを知ってうれしいです。あなたの分かち合いに感謝します。答えとしてマークすることができます:) –

関連する問題