2012-03-19 35 views
26

ソリューションを構築する必要がありますが、1つのプロジェクトは除外してください。私はどうすればいいのですか?私はこの問題について多くのことを調べたが、何も助けにならなかった。MSBUILDでプロジェクトをビルドから除外する方法は?

無効な要素:

ItemGroupセクションには、次の例外が上がります。不明なタスクまたはデータ型。

プロパティグループも例外を発生させます。

<project name="TI 8.1.6 build script"> 
    <ItemGroup> 
    <Solution Include="${ROOT}\Core\TI Core.sln" Exclude="${ROOT}\Utilities\DTS Indexing Service\Tdi.Origami.IndexUpdaterServiceSetup\Tdi.Origami.IndexUpdaterServiceSetup.wixproj"/> 
    </ItemGroup> 
... 
</project> 

だから、誰も私を助けることができる:

以下

は私のコードサンプルですか?

答えて

44

あなたは、Visual StudioでConfiguration Manager Dialogを使用することにより、特定のbuild configurationのためのソリューションレベルでのプロジェクトを除外することができます。

Configuration Manager Dialog

その後、あなたは単にビルド構成を指定ソリューションファイルmsbuildを呼び出すことができます使用:

msbuild /property:Configuration=Release MySolution.sln 
+2

を使用すると、この問題が解決しないことを構築することができます:( –

+0

何を達成しようとしていますか? –

+0

私は、除外するプロジェクトに対して「デバッグ」モードに設定しました。他のすべてのプロジェクトは「リリース」に設定されています。他と組み立てられ、例外は発生します。 –

11

エンリコによって提案されたソリューションは、そのwoul最も汎用性の高いソリューションです。常に仕事。別の解決方法は、<MSBuild>タスクを直接使用することです。これは、あなたが特定のディレクトリの下にすべてのプロジェクトファイルを持っている場合、または構築したいすべてのプロジェクトを簡単に列挙できる場合(つまり、ソリューション内のプロジェクトの数があまり多くない場合)に役立ちます。

たとえば、特定のプロジェクトを除き、あなたの現在のディレクトリの下のすべてのプロジェクトをビルドします。このMSBuildのファイル:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 

    <ItemGroup> 
    <MyProjectReferences Include="**\*.*proj" /> 
    <MyProjectReferences Exclude="Utilities\DTS Indexing Service\Tdi.Origami.IndexUpdaterServiceSetup\Tdi.Origami.IndexUpdaterServiceSetup.wixproj" /> 
    </ItemGroup> 

    <Target Name="BuildAllExceptWixProject"> 
    <MSBuild Projects="@(MyProjectReferences)" Targets="Build" /> 
    </Target> 

</Project> 

はその後、コマンドラインmsbuild <myproject> /t:BuildAllExceptWixProject

+3

あなたは正しいです。しかし** ProjectReferences **ではなく** ProjectReference **。 ** Include **は** ProjectReference ** itemに必要なプロパティなので、** Include/Exclude **を同じアイテムに入れます。そしてそれは動作します!プロジェクトは正常に除外されました。ありがとうございました!! –

+1

@LubochknAndrewの場合、グループの名前は任意の有効なXML要素名になります。 'ProjectReference'グループは、標準的なMicrosoftのターゲットですでに使用されているグループのうちの1つだけです。この名前はあなたが考えることができる他のどの名前よりも優れていません。私の答えの例では、Microsoftの標準的なターゲットは使用されていません。 –

関連する問題