2017-03-15 28 views
0

私は仕事で奇妙な状況に遭遇しました。私は複数のプロジェクトで同じライブラリを使用していますが、標準的な方法ではありません。Visual Studio - .NETで依存関係を正しく設定する方法

「MainProject」という名のメインプロジェクトがあるとします。
「A」という名前の共有ライブラリと「B」という別のライブラリもあります。
"B"は、多くのものを含み、 "MainProject"によってライブラリ "A" の両方によって使用される、広いユーティリティライブラリです。

すべてのこれらのプロジェクト/ライブラリは、それらのVCSのようにGitを有し、そのようにサブモジュールで構成されている:

MainProject:

  • ライブラリBのサブモジュール
  • ライブラリA
    • ライブラリBのサブモジュール

"MainProject"のソリューションを再構築しようとすると、問題が発生します。
Visual Studioがエラー出力:

Error 1 Metadata file 'LibraryA_Path\LibraryB.dll' not found

この問題の検索を、それは私がそれが期待通りのものが内蔵されませんように私には明らかになりました。
これは正しいです。「A」は、あまりにも深くネストされているため、おそらく参照する「B」を構築しません。

"MainProject"の "B"に明示的に "A"の参照を設定しようとしましたが、これはビルドの問題を解決しましたが、ライブラリのGit作業ツリーの変更を強制しました。この手作業による参照のプロセスをやり直すように強制します。

このような種類のプロジェクトを設定する正しい方法は何ですか?私はすべてのプロジェクトとライブラリを完全に制御しているので、何かを試すことができます - コードとGitで。

答えて

0

私はあなたを正しく理解しているかわかりませんが、ライブラリBプロジェクトでビルドされた* .dllを参照していますか?このような場合は、ライブラリBプロジェクトのプロジェクト参照に置き換えてください。ビジュアルスタジオは、参照プロジェクトが最初に構築されることを保証します。

+0

残念ながら、私は**プロジェクト**を参照していません**。 –

+0

そのようにプロジェクトはそれらを参照していますか? MainProject - >ライブラリB、MainProject - >ライブラリA - >ライブラリB?図書館Bは図書館Aを参照していますか?あなたが考えることができる他のリング参照は、Visual Studioが正しいビルドオーダーを決定するのを妨げる可能性がありますか? – DeveloperExceptionError

+0

はい、あなたはそれを正しく持っています - これは私のプロジェクトの注文です。 しかし、リングや循環参照はありません。プロジェクトのビルド順を見ると、実際にはうまく見えます。 –

関連する問題