0

我正在使用TFS2012與Visual Studio 2012構建定義,並且將一個定義設置爲構建包含.csproj和.vcproj(分別爲c#和C++)的解決方案。我可以在構建服務器上運行解決方案的本地構建,效果很好,構建輸出顯示所有項目(最顯着的是C++項目)都是構建的;預製,後建,整個九碼。但是,當我運行構建完全相同的解決方案的構建定義時,C++項目似乎沒有構建。生成報告沒有錯誤返回,但生成日誌只返回以下爲c + +項目:與csproj一起構建vcproj TFS2012

C:\ Program Files(x86)\ Microsoft Visual Studio 9.0 \ Common7 \ IDE .... \ vc \ vcpackages \ VCBuild.exe /覆蓋: 「[路徑解決方案文件] .Mixed Platforms.Debug.vsprops」[路徑到項目文件] 「調試|的Win32」

我所希望看到的是一個多更長的構建報告(表明項目實際構建),但是,我留下了似乎缺乏構建C++項目的嘗試。更不用說構建輸出不包含C++項目中的任何程序集或.pdb。

爲了消除沒有安裝Visual Studio 2008的問題,構建服務器確實安裝了Visual Studio 2008,並且已經執行了全面修復以確保所有正確的文件都已到位(像vcbuild.exe和vcprojectengine.dll)。

任何想法,爲什麼c + +項目不建設?謝謝你的幫助!

UPDATE_ _ __ _ __ _ __ _ __ _ ____

問題已經改變。由於一些漂亮的構建日誌記錄,我的印象是C++項目沒有構建(我運行這個想法是因爲我沒有在指定的構建定義放置位置看到任何項目輸出)。經過一番調查(以及一些非常有幫助的建議!),問題一直集中在簡單的C++項目輸出目錄屬性不會像C#屬性那樣動態更改。手動更改這些值並運行構建定義已經證明構建定義使用C++項目文件的默認輸出目錄屬性。

我的臨時解決方案是做一些腳本來將這些輸出複製到我需要的文件夾中。爲了進一步提出我的帖子的問題,是否有任何設置讓這些C++項目輸出目錄屬性動態變化爲C#項目?

+0

你的意思是C#項目動態更新輸出目錄?你的意思是基於配置的釋放/調試?對於C++和c#都應該是相同的。 – Isaiah4110

+0

我通過使用許多構建注意到的一件事是項目屬性的許多宏值被默認模板更改。這允許將輸出目錄更改爲C:\ Builds \ 1 \ ProjectCollectionName \ DefinitionName之類的東西,換句話說,要在構建臨時區域而不是默認輸出目錄中輸出(至少這是我的理解)。因此,要解決這個問題,我將在構建模板中添加一個活動,將C++輸出複製到放置位置。 – Freestyle076

回答

0

右鍵單擊您的解決方案並打開配置管理器。

一旦你在那裏,你可以指定你正在構建的配置,並指定需要構建的項目以及在哪個平臺上。如果打開DEBUG配置,您將知道C++項目是如何配置的(哪些配置,平臺以及是否需要構建)。您可以複製您在構建中使用的「配置」的相同設置定義。

打開構建定義 - >編輯生成定義 - >流程 - >項目,以建立 - >您可以在這裏選擇配置

打開您的構建確定指標 - >去處理 - >高級 - >設置MSBUILD平臺爲「x86」。這應該解決它。

+0

新的想法並沒有幫助:/。然而在此期間,我發現了一個有趣的位。我的問題可能與輸出目錄有關。我最大的挫折是,我沒有看到我的構建定義的放置位置中的C++輸出文件(之前認爲這是因爲該項目沒有構建)。但是,如果我刪除C++項目的立即bin文件夾中的輸出二進制文件並運行解決方案的構建定義,二進制文件將被替換(我確信這不是由於構建後命令)。輸出文件夾的值不能正確更新。更快 – Freestyle076

+0

這裏有一些好消息(好嗎?),似乎構建定義在構建C++項目方面做得很好。 C++項目文件被設置爲將輸出放置在項目文件的立即bin \ [debug/release]中。在運行c#項目的構建定義時,這些輸出值將動態更改爲構建服務器上的構建臨時區域。看起來,這不會發生在C++項目中,因爲輸出不會被改變,並且輸出的運行方式與我在本地項目中簡單地運行msbuild完全一樣。所以看來我有一個新的問題來更新這個職位... – Freestyle076

0

感謝您的迴應!不幸的是,我已經多次向配置管理器發送消息由於解決方案是c#和C++項目的混合體,我目前運行的配置/平臺是DEBUG/MIXED PLATFORMS。所有項目都選擇了建立,更我跑了DEBUG/WIN32生成定義(瞄準僅限於C++項目)和我從日誌中接收到關於每個C++項目唯一的輸出是:

C:\ Program Files(x86)\ Microsoft Visual Studio 9.0 \ Common7 \ IDE .... \ vc \ vcpackages \ VCBuild.exe /覆蓋:C:[解決方案的路徑] .Win32.Debug.vsprops C:[path到項目文件]「Debug | Win32」

這是日誌文件中關於我的C++項目的唯一輸出。任何想法構建過程正在嘗試做什麼?

+0

您有權登錄到構建服務器嗎?在那裏打開Visual Studio並嘗試編譯項目,看看會發生什麼。 – Isaiah4110

+0

總是要提一提所有你試過的東西,否則回答問題的人不會知道:) – Isaiah4110

+0

我這樣做,每次我直接構建包含我的C#和C++項目的解決方案文件時,都使用MSBuild構建服務器。我的問題只有在使用構建定義構建解決方案時才能找到。出於某種原因,僅使用構建定義和構建定義就會產生這些糟糕的結果,即我發佈的日誌消息。我試過的每一個版本都能正常工作。構建服務器上的msbuild,構建服務器上的vcbuild,右鍵單擊解決方案文件並在構建服務器上單擊Visual Studio 2008中的重建。所有工作都很好。 – Freestyle076

0

我認爲你的問題是我剛剛遇到的問題。默認情況下,TFS2012使用與您在項目中定義的不同的構建輸出結構。

因此,如果您希望某些輸出目錄是「Debug」或「.... \ Debug」等,它將會失敗。

解決方法是在文本編輯器中打開構建過程模板xaml文件。搜索「OutDir」並刪除這些條目。 (我只有一個)

這裏是那裏,我知道這個鏈接:

http://blogs.msdn.com/b/jimlamb/archive/2010/04/13/customizableoutdir-in-tfs-2010.aspx

http://social.msdn.microsoft.com/Forums/vstudio/en-US/7126f1a3-9437-416a-88ed-2f63f84b2937/tfs-buildmsbuild-2010-bin-folder-auto-redirection-to-binaries-folder-not-redirecting-all-projects?forum=tfsbuild

相關問題