ソリューションファイルパス(.slnファイル)とビルドモード(デバッグ、リリース)を渡して、ソリューションをコンパイルしたいと考えています。 devenv.exeやmsbuild.exeのようなコマンドラインプロセスを呼びたくないのですが、代わりにAPIを使用してコンパイルエラーがあるかどうかを知りたいと思います。ビジュアルスタジオソリューションをプログラムで構築する方法は?
可能ですか? これを行う方法がわかっていると思われる場合は、サンプルを提出してください。
ソリューションファイルパス(.slnファイル)とビルドモード(デバッグ、リリース)を渡して、ソリューションをコンパイルしたいと考えています。 devenv.exeやmsbuild.exeのようなコマンドラインプロセスを呼びたくないのですが、代わりにAPIを使用してコンパイルエラーがあるかどうかを知りたいと思います。ビジュアルスタジオソリューションをプログラムで構築する方法は?
可能ですか? これを行う方法がわかっていると思われる場合は、サンプルを提出してください。
コンパイルを行うには、ある時点でプロセスを起動し、コンパイルを開始するプロセスを起動する必要があります。 APIと闘うよりもはるかに簡単になるでしょう。
編集あなたがどのように動くかもしれないかについての良いアドバイスをしますが、私はまだ間違いだと思います。
itowlsonはあなたにもBuild Engine APIs
を使用することができます... MSDNから指摘されているように...
// Build a project file
bool success = engine.BuildProjectFile(@"c:\temp\validate.proj");
あなたは、このようなバッチファイルとしてスクリプトからMSBuildを使用することができます。 ErrorLevelに0以外のものがないかチェックしてください。そうしないと、APIを使うことができません。
C:\ WINDOWS \ Microsoft.NET \ Frameworkの\ v2.0.50727の\からMSBuild.exe
..からMSBuild.exeから/? ...
のMicrosoft(R)がすべての版権を保有エンジンのバージョン 2.0.50727.4927 [Microsoft .NET Frameworkのバージョン2.0.50727.4927] 著作権(C)Microsoft Corporationの 2005をビルドします。
構文:からMSBuild.exe [オプション]、[プロジェクトファイル]
...
例:
MSBuild MyApp.sln /t:Rebuild /p:Configuration=Release MSBuild MyApp.csproj /t:Clean /p:Configuration=Debug
彼はMSBuildコマンドラインを使用したくないので、特にMSBuild API、特にhttp://msdn.microsoft.com/en-us/library/microsoft.build.buildengineを指す価値があります。 engine.buildprojectfile.aspx。 – itowlson
良い点...私はおそらくProcess.Start()でexeファイルをラップしていましたが、APIの利点が分かりました。 –
また、MSBuild APIを使用することをお勧めします。それはかなりうまくいくようです。ただし、.NET4とVS2010では大幅に変更されています。
スクリプトを使用して終了コードを簡単に作成することができます。 (私はあまりにも多くの人が、シンプルで簡単なバッチファイルがどのように動作するのか覚えていないと思う... DOSが普及してから数年経っているので、あまり知られていないかもしれない) –
APIを使用するほうがはるかに簡単です。 私はエラーがないかどうかをテストできる適切なオブジェクトが返されても、簡単な.net APIはありません。等 ありがとうございます – clems
itowlsonが指摘しているビルドエンジンAPIを見逃してしまったようです。http://msdn.microsoft.com/en-us/library/microsoft.build.buildengine.engine.buildprojectfile.aspx –