2009-11-11 7 views
7

ソリューションファイルパス(.slnファイル)とビルドモード(デバッグ、リリース)を渡して、ソリューションをコンパイルしたいと考えています。 devenv.exeやmsbuild.exeのようなコマンドラインプロセスを呼びたくないのですが、代わりにAPIを使用してコンパイルエラーがあるかどうかを知りたいと思います。ビジュアルスタジオソリューションをプログラムで構築する方法は?

可能ですか? これを行う方法がわかっていると思われる場合は、サンプルを提出してください。

答えて

3

コンパイルを行うには、ある時点でプロセスを起動し、コンパイルを開始するプロセスを起動する必要があります。 APIと闘うよりもはるかに簡単になるでしょう。

編集あなたがどのように動くかもしれないかについての良いアドバイスをしますが、私はまだ間違いだと思います。

+0

スクリプトを使用して終了コードを簡単に作成することができます。 (私はあまりにも多くの人が、シンプルで簡単なバッチファイルがどのように動作するのか覚えていないと思う... DOSが普及してから数年経っているので、あまり知られていないかもしれない) –

+0

APIを使用するほうがはるかに簡単です。 私はエラーがないかどうかをテストできる適切なオブジェクトが返されても、簡単な.net APIはありません。等 ありがとうございます – clems

+0

itowlsonが指摘しているビルドエンジンAPIを見逃してしまったようです。http://msdn.microsoft.com/en-us/library/microsoft.build.buildengine.engine.buildprojectfile.aspx –

2

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

彼はMSBuildコマンドラインを使用したくないので、特にMSBuild API、特にhttp://msdn.microsoft.com/en-us/library/microsoft.build.buildengineを指す価値があります。 engine.buildprojectfile.aspx。 – itowlson

+0

良い点...私はおそらくProcess.Start()でexeファイルをラップしていましたが、APIの利点が分かりました。 –

1

ここでは、プログラムC#コンパイラを使用して議論articleです。ここにはslnファイルフォーマットについて議論しているarticleがあります。 slnファイルはxmlファイルなので、読みやすくなっています。

0

また、MSBuild APIを使用することをお勧めします。それはかなりうまくいくようです。ただし、.NET4とVS2010では大幅に変更されています。

関連する問題