2013-08-20 107 views
1

我有一系列需要編譯和發佈的項目,部署到具有單獨的MSBuild參數的單獨目錄中。就目前而言,我爲每個構建單獨構建。例如,項目1:針對具有不同構建參數的多個項目運行構建

MSBuild Arguments: /target:myTarget /property:PublishDir=\\1.1.1.1\PublishDir1 

和項目2:

MSBuild Arguments: /target:myTarget /property:PublishDir=\\1.1.1.2\PublishDir2 

不過,我想將它們合併成一個單一的構建。我遇到的問題是,雖然TFS允許我在構建中指定多個項目,但MSBuild參數適用於所有項目。有沒有一種快捷的方法,我可以強制每個項目的一組不同的構建參數,還是我需要創建一個新的構建模板來做到這一點?

+0

我想不出任何不涉及在模板XAML中進行黑客入侵的任何事情。 – DaveShaw

+0

你有一個你正在使用的自定義MSBUILD腳本嗎? 當我使用TFS2008(直接使用TFSBuild.proj msbuild腳本)時,我們遇到了類似的問題。我們那時做了什麼,我們編輯了TFSBuild.proj文件以添加在構建過程中傳入的其他MSBUILD屬性(例如:target_proj1,publishDir_proj1,Target_proj2等)。然後在基於正在編譯的項目的MSBUILD腳本中,我們會將適當的屬性傳遞給MSBUILD.exe調用。 – Isaiah4110

+0

在2010年,IIRC TFSBuild.proj文件被WF Xaml文件所取代。我謹此陳述。 –

回答

1

恐怕,您需要新的構建模板才能將其他參數傳遞給模板。

但是,如果您嘗試將構建輸出發佈到基於不同項目的不同目錄,則可以通過爲每個項目設置相同的發佈配置文件來實現它。爲每個同名項目添加發布配置文件。您可以使用文件系統發佈方法將輸出發佈到每個項目的不同目錄。只需在MsBuild參數中調用發佈配置文件即可。

/p:DeployOnBuild=true;PublishProfile=Dev 
+0

我沒有意識到,可以爲非web應用程序配置發佈配置文件。我將如何去做這件事? –

+0

對不起。我沒有意識到您正在使用非網絡應用程序。您無法將發佈配置文件添加到非Web應用程序。我認爲你的情況,你需要自定義模板,或者你可以嘗試這種方法http://blog.stangroome.com/2011/09/06/queue-another-team-build-when-one-team-build-succeeds/ – suresh2

+0

不完全是我想要的,但它確實節省了我一些工作,試圖自己更改構建定義(並且它工作) - 謝謝 –

1

我建議你創建一個MSBuild .proj文件來執行這些版本,即:

<Project ToolsVersion="4.0" DefaultTargets="Rebuild" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
<Target Name="Rebuild" > 
<!--Execute proj1--> 
<MSBuild Projects="Proj1.csproj" Properties="Configuration=Debug;PublishDir=\\1.1.1.2\PublishDir1;></MSBuild> 
<!--Execute proj2--> 
<MSBuild Projects="Proj2.csproj" Properties="Configuration=Debug;PublishDir=\\1.1.1.2\PublishDir2;></MSBuild> 
</Target> 
</Project> 

只需將您的TFS這種定製.proj文件。

+0

這不會有問題,構建所有其他的東西(例如獲取最新源代碼等)將被錯過? –

+0

我認爲這取決於你如何配置構建。我們使用我描述的方法,它工作正常 - 我認爲你可以嘗試一下,看看它是否適用於你 – Isantipov

+0

我收到一個錯誤「The target」Build「在項目中不存在。」有了這個。 –

相關問題