131

devenv.com で行うように、msbuild を使用してソリューションの特定のプロジェクトをビルドするためのコマンドラインが必要です。devenv.com では、次のコマンドラインを使用してソリューションのプロジェクトを指定できます。

devenv.com /Build Release|x86 test.sln /project "testproject"

上記のコマンドラインを使用すると、devenv.com を使用して test.sln で testproject をビルドできます。同じソリューションの msbuild のコマンドラインは何ですか。

ありがとう

4

5 に答える 5

227
msbuild test.sln /t:project /p:Configuration="Release" /p:Platform="x86" /p:BuildProjectReferences=false

割り当てられる/tのはソリューション内のプロジェクト名であり、プロジェクト ファイル名とは異なる場合があることに注意してください。

また、「方法: MSBuild.exe を使用してソリューション内の特定のターゲットをビルドする」で説明されているように:

プロジェクト名に 、 、 、 、 、 、または のいずれかの文字が含まれている場合は%$指定@;.ターゲット()でそれら'を に置き換えます。_

一度に複数のプロジェクトをビルドすることもできます:

msbuild test.sln /t:project;project2 /p:Configuration="Release" /p:Platform="x86" /p:BuildProjectReferences=false

再構築またはクリーンアップするには、 または に変更し/t:projectます/t:project:clean/t:project:rebuild

于 2013-10-23T06:29:19.170 に答える
20

MSBuild は、実際にはソリューションではなくプロジェクトを使用して機能します。このソリューションは、内部で MSBuild の一時プロジェクト ファイルに解析するためにのみ使用されます。次のコマンドを実行することで、目的のプロジェクトを MSBuild から直接ビルドできるはずです。

"msbuild testproject /p:Configuration=Release /p:Platform=x86"

ソリューションの代わりにプロジェクトを直接使用すると発生する可能性のある大きな問題が 1 つあります。プロジェクトへの参照を追加してビルド システムに依存関係を自動的に解決させる代わりに、ソリューションを使用してプロジェクト間の依存関係を表現する場合です。 .

sln ファイルを使用してビルド順序を強制している場合は、それらの依存関係を直接 proj ファイルに取り込んで、sln から削除することをお勧めします。これにより、MSBuild から任意の proj ファイルを直接呼び出すことができ、プロジェクトはすべて、追加作業なしで個別にビルドされます。ビルド入力としてではなく、Visual Studio での作業を容易にするために、sln ファイルをプロジェクトのグループとして扱う必要があります。

于 2012-12-19T15:22:40.847 に答える
8

将来の求職者への情報として投稿する

ビルド スクリプトに以下を追加し、一度実行します。これにより、msbuild が実際に使用する正確なターゲットとその他の情報が生成されます。

例:.プロジェクト名またはフォルダーにある場合、msbuild_..

set MSBuildEmitSolution=1

情報を取得したら、ビルド スクリプトを必要な詳細で更新します。

于 2016-11-02T05:12:41.703 に答える