2010-09-24 78 views
0

這與這兩個問題:讓CruiseControl.NET MSBuild任務的工作方式相同VS 2008構建

Why does MSBuild fail from the command line where VS2008 succeeds?

How to get cmd line build command for VS solution?

當我從Visual Studio 2008中構建,構建成功。如果我使用.NET Framework 3.5安裝附帶的MSBuild從命令行構建,它通常會失敗。但是,如果我使用VS2008安裝的Visual Studio 2008命令提示符,它會成功。對於我所鏈接的前兩個問題,答案(我只能部分理解)似乎是命令行失敗的原因。我的問題是特定於CruiseControl.NET。我如何應用他們的答案,以便CruiseControl.Net MSBuild任務始終能夠成功,即使在將來進行更改後,只要它在VS 2008中正確構建即可?

在此先感謝您的幫助!

+0

你可以發佈你遇到的錯誤與msbuild命令行嗎?在你的情況下使用devenv任務可能嗎? (見http://confluence.public.thoughtworks.org/display/CCNET/Visual+Studio+Task) – 2010-09-24 08:58:48

+0

錯誤太大,無法發佈。我想避免在CI服務器上安裝VS。我現在開始工作了。謝謝。 – 2010-09-24 22:00:35

回答

0

第一步是使用MSBuild從命令行正確構建項目。對我來說,這是一個在我將要列出的CI服務器上安裝一些缺失的依賴關係的問題。

1)我需要爲Compact Framework 3.5下載和安裝Power Toys,以便構建.NET Compact Framwork 3.5項目。或者我可以安裝Visual Studio 2008專業版。

2)我缺少的SQL Server Compact 3.5。在下載並安裝Windows Mobile後,仍然無法找到依賴項。我通過包括SqlServerCe.dll文件在我的項目的資源庫副本,並改變所有引用此文件使用一個從資源庫中,而不是預期的系統知道在哪裏可以找到這個文件下載解決了這個。或者安裝Visual Studio 2008專業版可能已經解決了這個問題,而不需要我包括我的庫中的DLL的一個副本,但我不知道。

由於我使用MSBuild從命令行進行編譯而無需執行任何特殊的初始化或使用任何特殊的命令提示符,因此CruiseControl.Net中的MSBuild任務無需執行任何特殊操作。希望使用的MSBuild從命令提示符將繼續成爲這個簡單的我,但其他人似乎沒有那麼幸運了根據2個問題我掛在我的問題上。

0

恕我直言,如果你不能讓你的應用程序從命令行做一個乾淨的生成我建議修復這個問題,而不是修復問題的症狀。

這裏是我做過什麼來解決類似的問題,但使用VS2010:

在構建服務器安裝VS2010臨

在命令行中,我的生成服務器上,我的MSBuild上運行我的項目的.sln文件:

c:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild \\build-share\dev\projects\TestProject\trunk\TestProject.sln /t:Rebuild /v:diag /p:Configuration=Release 

注:\集結共享\僅僅是建立使用網絡文件共享。

一旦按照我想要的方式工作,我將任務添加到我的ccnet。配置:

<project ...> 
    ... 
    <tasks> 
    ... 
    <msbuild> 
     <executable>c:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe</executable> 
     <workingDirectory>\\build-share\dev\projects\TestProject\trunk</workingDirectory> 
     <projectFile>TestProject.sln</projectFile> 
     <buildArgs>/p:Configuration=Release /v:diag /t:rebuild</buildArgs> 
     <timeout>300</timeout> 
    </msbuild> 
    ... 
    </tasks> 
</project> 
相關問題