2010-06-24 110 views
2

我正在用rake構建一個新的.NET項目,使用神話般的albacore gem。我的組織仍在使用NAnt,並且有很多人希望在構建腳本執行時看到日誌文件。如何將轉儲到STDOUT的msbuild任務輸出保存到日誌文件中?如何將我的msbuild輸出結果從rake中輸出到日誌文件

+0

你如何運行你的rake任務?從CI服務器?從命令行?要麼 ? – 2010-06-25 17:05:12

+0

嗨德里克 - 現在,我從命令行運行,很快我們就會把它連接到哈德森。我們已經說服人們,如果沒有物理日誌文件執行rake,哈德森將會很好。我想通過使用我的msbuild和nunit任務上的「.parameters」選項來記錄輸出,我滿足了對日誌文件的渴望。我很喜歡長鰭金槍魚!你們做得很好。 – dalesmithtx 2010-06-25 20:00:05

+0

很酷。是的,我發現沒有真正需要從哈德森日誌文件,因爲哈德森捕獲所有的STDOUT到它自己的日誌。但如果你需要命令行,我想你可以將STDOUT重定向到一個文件中:rake >> build.log – 2010-06-26 01:23:40

回答

3

我想出了一個解決方案。我們並不需要爲我們的CI服務器(hudson)建立日誌文件,但是當物理文件檢查構建在本地運行時,尤其是當我們正在執行簽入舞蹈和構建失敗。

幸運的是,長鰭金槍魚足夠聰明地創建一個「.parameters」選項,它可以與任何命令行工具任務一起使用,以添加該任務未明確處理的參數。因此,例如,您可以向msbuild任務添加一個參數,以指定MSBuild的日誌文件。而且它會有點像這樣:

BUILD_REPORTS = 'BuildReports' 
MSBUILD_EXE = "C:/Windows/Microsoft.NET/Framework/v4.0.30319/msbuild.exe" 

directory BUILD_REPORTS 

CLEAN.include BUILD_REPORTS 

task :default => [:build] 

desc "Build the solution" 
msbuild :build => BUILD_REPORTS do |msb| 
    msb.properties :configuration => :Debug 
    msb.path_to_command = MSBUILD_EXE 
    msb.targets :Clean, :Build 
    msb.solution = "./mysolution.sln" 
    msb.parameters "/l:FileLogger,Microsoft.Build;logfile=" + log_file("build") 
end 

def log_file(log_file_name) 
    BUILD_REPORTS + log_file_name + ".log" 
end 

我們的Rakefile比稍微複雜一點,因爲它有做多的東西,但你的想法。