2016-04-25 13 views
0

多くのC#プロジェクトを持つVisual Studio 2013ソリューションがあります。 プロジェクトBは、プロジェクト(A)のビルドが完了した後にビルドする必要があるという要件があります。MSBuildタスクでプロジェクトの依存関係が構築されないのはなぜですか?

プロジェクトAはプロジェクトBに依存しません。プロジェクトBはプロジェクトA、Cなどに依存しています。すべての依存関係はプロジェクト参照として定義されています。

私は、プロジェクトには、次のターゲットを追加しました:

<Target Name="MyAfterBuildStep" AfterTargets="AfterBuild"> 
    <MSBuild Projects="$(Bproject)" Properties="Configuration=$(ConfigurationName);Platform=$(PlatformName);SolutionDir=$(SolutionDir);BuildProjectReferences=true"/> 
</Target> 

それは起動しますが、それは$(Bproject)の依存関係を構築しません。

なぜ依存関係が構築されていないのかを理解するのに役立つ人がいますか?同じソリューションの両方のプロジェクトの場合

+1

プロジェクト参照またはファイル参照として依存関係を定義していますか? Bprojectはソリューションか単一のプロジェクトですか? – KMoraz

+0

プロジェクト参照として。ここで言及されているBプロジェクトなどのプロジェクトは、同じソリューションのプロジェクトです。 – lenikur

+0

要件はやや面倒です。プロジェクトBがプロジェクトAに依存している場合、プロジェクトBはプロジェクトBをビルドする必要がありますが、それ以外の方法ではデフォルトの動作はありません。あなたに強制的に依存関係を強制し、それを回避する方法を尋ねます。他の解決策が示唆されるかもしれないので、あなたが目標であることをもっとよく説明してください。 – KMoraz

答えて

0

$(SolutionPath)をターゲットとしてBprojectを構築し、例えば:

<MSBuild Projects="$(SolutionPath)" Targets="Tests\Bproject" Properties="Configuration=$(ConfigurationName);Platform=$(PlatformName);SolutionDir=$(SolutionDir);BuildProjectReferences=true"/> 

ターゲット名は、ソリューションのフォルダを含むプロジェクトの名前を反映する必要があります。

+0

ありがとうございます!私は今それを確認することはできませんが、それはいいように見えます。私はこの回答を有用とマークしましたが、私は受け入れられる評判はありません。 – lenikur

関連する問題