web-dev-qa-db-ja.com

コマンドラインからソリューション内の1つのプロジェクトのみをビルドする

私は、その中にたくさんのc#プロジェクトを持つ多くのソリューションフォルダを持つソリューションを持っています。

コマンドラインからこれらのプロジェクトの1つだけをビルド/リビルドするにはどうすればよいですか?

msbuildを使用してそれを行う方法はあると思いますが、msbuildについては何も知りません。

ありがとう!

41
mmutilva

単にmsbuildを呼び出して、ビルドする.csproj/.vbprojプロジェクトファイルを渡すと、そのファイルのみが実行されます。

のようなもの:

cd \MySolution
msbuild .\Project1\Project1.csproj
23
Joe Enos

プロジェクトが含まれるソリューションファイルがあり、1つのプロジェクトをビルド/再構築する場合。

MSDNのこのWebページには、あなたがしなければならないことが正確にリストされています。

http://msdn.Microsoft.com/en-us/library/ms171486.aspx

したがって、プロジェクトを含むソリューションファイルmysolution.slnを指定します。

  • foo.vcxproj
  • bar.vcxproj
  • baz.vcxproj

それらはすべて下から上への順序で互いに依存しています。 bazが最も独立しているため、barbazに依存し、foobarに依存します。

Fooを構築する場合は、次のようにします。

MSBuild mysolution.sln /target:foo

ここでの他の回答は、依存関係については説明しませんでした。確かにmsbuild.exeは単一のプロジェクトファイル(つまりfoo.vcxproj)をビルドしますが、barとbazがまだビルドされていないと失敗します。複数のプロジェクトを構築し、最初に独立したプロジェクトを構築するには、ソリューションファイルを渡す必要があります(すべてのOPがこれをソリューションファイルの一部であると言及した後)。次に、プロジェクト名とコロンで区切られたターゲットを渡します。

MSBuild mysolution.sln /target:foo:Rebuild

ここで大きな仮定。プロジェクト名$(ProjectName)がファイル名と一致すると仮定しています。

Edit(from comment:プロジェクト名にドット(。)が含まれている場合は、それらをアンダースコア(_)に置き換えます。

92
C Johnson

コマンドラインからMSBuildを使用する方法の詳細については、 this リファレンスを参照してください。必要なものの例を次に示します。

MSBuild.exe MyProject.proj /t:rebuild
4
Bernard

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

mSBuildEmitSolution = 1を設定します

https://stackoverflow.com/a/40372894/826862

1
freshprinze