簡體   English   中英

只使用MS Build可以實現Delphi構建自動化和持續集成嗎?

[英]Delphi Build Automation and Continuous Integration feasible using MS Build only?

我正在尋求實現一個連續的單元測試運行系統,我聽說稱之為“冒煙”或“tinderbox”,(一個構建服務器,可以執行干凈的版本控制檢查以及給定源存儲庫中所有內容的完整系統構建或使用Delphi,小團隊的“持續集成”之類的東西。

我不願承諾商業“構建服務器”產品,我希望我可以通過內置於delphi中的MS-Build支持做很多事情。

我正在尋找資源,想法和開始的地方。 我不知道如何使用MS Build來達到這個目的。 Steve Trevethen有一個博客文章, 引用了對舊的dcc32命令行構建的一些討論,並且一些評論提到ms-build自delphi 2007以來一直在這里。我正在使用Delphi 2010.我正在尋找指導和見解,以及經驗,這將告訴我,這是一條合理的道路,如果沒有,我應該走哪條路?

我發現你可以使用/ p:DCU_DcuOutput =覆蓋msbuild命令行中的Unit(DCU)和EXE Output Directory。 請注意,我查看了DPROJ文件中的XML,以了解如何覆蓋內容。

但是,它只執行make,而不是構建,並且/ t:rebuild不起作用(編輯:是的。它在DPROJ文件上工作正常,但在GroupProjects上沒有。)

我希望在那里有更多的MSBuild-with-Delphi文檔? “Rad Studio 2010”產品文檔中的MS-Build幫助顯示了有關MS-Build的一兩件事,但實際上是粗略和不完整的。

相關問題:

MSBuild命令行

Delphi 2010使用MSBuild作為它的主要構建引擎。 這意味着IDE和命令行都完全相同。 這也意味着您可以使用命令行輕松構建現有項目。 事實上,我們德爾福團隊一直都在做這件事。 您無需擔心編譯器本身的開關 - IDE將創建的DProj文件

在“開始”菜單上有一個命令行,用於將MSBuild與現有的Delphi項目一起使用。 它正確設置環境,以便您可以簡單地調用:

msbuild myproject.dproj

您還可以從命令行調用特定的構建配置,使用IDE可以使用MSBuild的命令行參數輕松創建所述配置。

如果要自己創建環境,可以運行rsvars.bat批處理文件進行設置。 該文件可以在\\ bin目錄中找到,並且應該可以從默認命令行獲得。

該文件包含以下內容:

@SET BDS=<your BDS directory>
@SET BDSCOMMONDIR=C:\Users\Public\Documents\RAD Studio\7.0
@SET FrameworkDir=C:\Windows\Microsoft.NET\Framework\v2.0.50727
@SET FrameworkVersion=v2.0.50727
@SET FrameworkSDKDir=
@SET PATH=%FrameworkDir%;%FrameworkSDKDir%;%PATH%
@SET LANGDIR=EN

因此,如果要創建自己的持續集成構建,可以使用MSBuild輕松管理Delphi構建。

dproj和groupproj是msbuild文件,你可以查看它們。 信息的其他部分可以在msbuild安裝路徑(C:\\ WINDOWS \\ Microsoft.NET \\ Framework \\ v2.0.50727)中找到。 你會在那里找到幾個Borland。*。目標文件。

在msbuild腳本中,您可以看到以其命名的不同目標。 例如,groupfile包含Make,Clean和Build目標,您可以使用/ t參數指定這些目標。 dproj文件也是如此。 dproj文件也有一個ReBuild目標。 它做了一個Clean然后是一個Build。 如果要對groupfile具有相同的效果,可以指定兩個目標:/ t:Clean; Build

您還可以在/ p中找到許多參數。 例如,配置指定配置或DCC_Quiet指示dcc32停止輸出無用的空格。

因此,從命令行執行使用Release配置的構建是以下命令:

msbuild mygroup.groupproj /p:Configuration=Release /t:Build

免責聲明:我看過Delphi 2007的msbuild文件。 后來的Delphi版本可能已經更改了目標或參數的名稱。 只需查看msbuild腳本,找出哪個是哪個。

我不確定這是否是您所需要的,但我有用於Delphi 2009的持續集成和DUnit測試的CruiseControl.NET設置.CCNET有一組特定的MSBuild任務,除了一些設置問題,它對我來說很完美。

如果你需要的話,我可以讓你知道我必須做些什么。

標記

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM