當我們使用TFS 2008(SP1)時,我們曾經能夠訪問包含構建運行原因的「Reason」MSBuild屬性。構建開始後即可使用,因此無需獲取任務/目標。現在我們正在使用TFS 2010(和MSBuild /升級模板,而不是工作流),並且該屬性不再被填充。我可以編寫一個自定義任務來從IBuildDetail檢索信息,但是沒有可以立即爲我的MSBuild腳本提供的屬性?我以前可以根據構建原因進行條件MSBuild腳本導入,如果必須使用任務/目標來獲取原因,這將不起作用。TFS 2010中的「Reason」屬性發生了什麼構建
2
A
回答
1
您仍在使用MSBuild腳本,因此我假設您使用升級模板。您可以克隆/編輯或修改升級模板,以便模板獲取當前的構建原因並通過運行TfsBuild for Configuration文件夾活動將其傳遞到MSBuild。在Visual Studio中打開模板進行編輯,然後執行以下操作:
選擇運行代理活動並轉至變量選項卡。創建一個新變量來存儲構建原因並使用IBuildDetail中的信息填充其默認值。添加類似以下內容的變量列表:
Name: currentBuildReason
Variable type: String
Scope: Run On Agent
Default: BuildDetail.Reason.ToString()
接下來,單擊屬性對話框運行TfsBuild的配置文件夾活動。選擇CommandLineArgument elipses以打開將參數傳遞給TFSBuild的對話框。你可能只看到一個變量中列出:
MSBuildArguments
現在,您可以在當前構建理由添加到命令行參數(和仍然可以通過任何現有MSBuildArguments),與此類似:
String.Format("/p:CurrentBuildReason={0} {1}", currentBuildReason, MSBuildArguments)
單擊確定關閉對話框。這會將當前構建原因作爲名爲CurrentBuildReason的新參數傳遞,並且可以在MSBuild腳本中將其引用爲$(CurrentBuildReason)。
保存並簽入升級模板。 將模板分配給構建定義。該定義使用的MSBuild腳本現在可以使用上述的變量。
相關問題
- 1. TFS 2010在TFS 2010中構建定義
- 2. 構建在buildbot中發生了什麼?可以buildmaster構建?
- 3. 生成tfs 2010的構建定義
- 4. TFS 2010構建:Microsoft.TeamFoundation.Build.Workflow.Activities.SyncWorkspace
- 5. CakePHP 3的控制器中的$ use屬性發生了什麼?
- 6. 觸發TFS 2010團隊構建另一個構建的成功
- 7. Ant:在antcall構建文件中設置的屬性會發生什麼?
- 8. 在tfs 2010中創建構建類型
- 9. TFS 2010構建時機
- 10. TFS 2010構建服務
- 11. TFS 2010中的構建過程
- 12. TFS 2012構建代理與TFS 2010構建代理的優勢?
- 13. Visual Studio 2010中,當構建發生
- 14. Visual Studio 2010中的VSFileFinder.Connect.ShowVSFileFinder發生了什麼?
- 15. 升級到TFS 2010後現有工作區會發生什麼
- 16. LocationResult中發生了什麼?
- 17. DynamicViewDataDictionary.cs中發生了什麼?
- 18. 發生了什麼
- 19. )。發生了什麼?
- 20. 發生了什麼錯了?
- 21. 無法讀取屬性'getElementsByTagName'爲null,發生了什麼?
- 22. 更新了render屬性後,jsf組件會發生什麼
- 23. GINA書後,groovy類屬性發生了什麼變化?
- 24. 在TFS 2010中構建.NET 1.1
- 25. 在TFS 2010中編輯構建定義
- 26. TFS 2010中的「發現在構建」下拉菜單
- 27. 爲什麼點擊事件發生後,checked屬性發生了變化?
- 28. 構建機器特定的屬性(TFS構建)
- 29. 構建失敗與TFS 2010構建但通過VS 2010
- 30. VS 2010中「格式」功能發生了什麼變化?