用Rake编译C#工程
时间:2010-09-19 来源:DarthVader
没有什么magic,就是用Rake直接调用MsBuild编译csproj,下面是代码
CSPROJECTS = Rake::FileList["**/*.csproj"] CONFIG = "Release" ENV['_Framework'] = 'v3.5' verbose(true) def msbuild_all(target) msbuild_csprojects(target) end def msbuild_csprojects(target) CSPROJECTS.map {|x| msbuild(target, x)} end def msbuild(target, project, props={}) platform = ":#{props['Platform']}" if props.key?('Platform') task "#{target}#{platform}:#{project}" do run_msbuild(target, project, props) end end def run_msbuild(target, project, props) cmd = "#{ENV['WinDir']}/Microsoft.NET/Framework/#{ENV['_Framework']}/msbuild.exe " cmd += "/nologo /m /v:m " props.each{|k,v| cmd += "/p:#{k}=\"#{v}\" "} cmd += "/p:Configuration=#{CONFIG} " cmd += "/t:#{target} #{project}" prop_desc = props.to_a.map{|x| "#{x[0]} = #{x[1]}"}.join(', ') desc = project desc += " (#{prop_desc})" if prop_desc.size != 0 if target == 'clean' then puts "Cleaning #{desc}" else puts "Building #{desc}" end sh cmd end
下面是Rakefile的内容:
require 'rake_msbuild' task :default => :build desc "build" task :build => msbuild_all('build') desc "clean" task :clean => msbuild_all('clean') desc 'rebuild' task :rebuild => [:clean, :build]
相关阅读 更多 +