Albacore msbuild任務和相關配置對象使用一些voodoo來自動查找和設置默認的MSBuild exe版本。它基於通用命令行任務,因此它有一個command
參數。
self.command = File.join(get_net_version(netversion), "MSBuild.exe")
您可以手動設置的命令選項和定義許多任務
task :build_all_versions => [ :build_net20, :build_net35, :build_net40 ]
msbuild :build_net20 do |msb|
msb.command = 'C:/Windows/Microsoft.NET/Framework/v2.0.50727/msbuild.exe'
end
msbuild :build_net35 do |msb|
msb.command = 'C:/Windows/Microsoft.NET/Framework/v3.5/msbuild.exe'
end
msbuild :build_net40 do |msb|
msb.command = 'C:/Windows/Microsoft.NET/Framework/v4.0.30319/msbuild.exe'
end
或者,你可以使用internal Albacore module/method得到msbuild.exe
路徑。它定義了一個私有模塊方法,所以你必須去include
它。
include Configuration::NetVersion
msbuild :build_net20 do |msb|
msb.command = File.join(get_net_version :net20, 'msbuild.exe')
...
end
而且,在這一點上,我將基於.NET版本符號數組動態地定義任務。
net_versions = [ :net20, :net35, :net40 ]
build_tasks = net_versions.map { |ver| "build_#{ver}" }
task :build_all => build_tasks
net_versions.zip(build_tasks) do |ver, task|
msbuild task do |msb|
msb.command = File.join(get_net_version ver, 'msbuild.exe')
# all the other stuff
end
end
有沒有.NET 3.0工具,他們所使用的.NET 2.0工具,apparently。
你好?這個答案有幫助嗎?或者您是否已經解決了您的問題? –