2009-11-11 198 views
7

我想通過傳遞解決方案文件路徑(.sln文件)和構建模式(調試,發佈)來編譯解決方案。 我不想調用類似devenv.exe或msbuild.exe的命令行進程,而是想使用API​​並知道是否存在編譯錯誤。如何以編程方式構建Visual Studio解決方案?

可能嗎? 如果您認爲如何做到這一點,請提供樣品。

回答

3

您將不得不在某個時候啓動一個進程來編譯,您可能會產生一個啓動編譯的過程。這比用API掙扎要容易得多。

編輯安德魯提供了一些很好的建議,你可能會怎麼做,但我仍然認爲這是一個錯誤。

+0

令人驚訝的是退出代碼可以很容易地用腳本編寫。 (我認爲太多的人不記得批處理文件是多麼簡單和容易的工作......然而,DOS已經流行了幾年,所以也許他們只是不知道。) – 2009-11-11 04:57:40

+0

夠公平的,聽起來確實如此使用API​​更容易。 我認爲這是一個恥辱有沒有簡單的.net API,但有一個適當的對象返回,我們可以測試錯誤。等等 謝謝 – clems 2009-11-11 07:10:53

+0

猜你錯過了itowlson指出的構建引擎API http://msdn.microsoft.com/en-us/library/microsoft.build.buildengine.engine.buildprojectfile.aspx – 2009-11-11 11:46:10

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 \框架\ V2.0.50727 \ MSBuild.exe

..從msbuild.exe /? ...

微軟(R)構建引擎版本 2.0.50727.4927 [Microsoft .NET框架版本2.0.50727.4927] 版權所有(C)微軟公司 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 2009-11-11 04:52:17

+0

好點...我可能只是用一個Process.Start()包裝exe,但我可以看到API的優勢。 – 2009-11-11 04:54:06

1

這裏是一個article使用C#編譯器編程討論。這裏是討論sln文件格式的article。 sln文件是一個xml文件,所以它很容易閱讀。

0

我也建議使用MSBuild API。它似乎工作得很好。但是,它在.NET4和VS2010中發生了顯着變化。

相關問題