web-dev-qa-db-ja.com

MSBUILDのビルドからプロジェクトを除外する方法は?

ソリューションを構築する必要がありますが、1つのプロジェクトを除外します。どうすればいいですか?私はこの問題について多くを検索しましたが、何も解決できませんでした。

ItemGroupセクションは次の例外を発生させます:

無効な要素不明なタスクまたはデータ型。

PropertyGroupも例外を発生させます。

以下は私のコードサンプルです:

<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>

だから誰も私を助けることができますか?

36
Andrew Lubochkn

Visual Studioで Configuration Manager Dialog を使用すると、特定の build configuration のソリューションレベルでプロジェクトを除外できます。

Configuration Manager Dialog

次に、使用するビルド構成を指定して、solutionファイルmsbuildを呼び出すだけです。

msbuild /property:Configuration=Release MySolution.sln
61

Enricoが提案するソリューションは、常に機能する最も用途の広いソリューションです。別の解決策は、<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を使用してビルドできます

16
seva titov

ソリューションファイル(.sln)で、Build.0エントリを削除します。例えば:

Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MyProject", "MyProject.vcxproj", "{2281D9E7-5261-433D-BB04-176A61500CA3}"
EndProject

GlobalSection(ProjectConfigurationPlatforms) = postSolution
    {2281D9E7-5261-433D-BB04-176A61500CA3}.Debug|x86.Build.0 = Debug|x64

この「Build.0」エントリを削除すると、ソリューションに正常にロードされますが、GUIまたは外部MSBuildを介してビルドされません。

2
BmanMA