Just a smattering of small changes and bug-fixes; here’s the change-log:

=== 0.0.8 / 2009-?

* CHANGE: Eliminate the need to pass stuff to AssemblyInfoTask when it can just use the defaults ... by default.

* FIX: Bug with harvesting when output contains directories

* FIX: Test-runner now executes from within the same directory as the DLL(s) containing tests that it's running through.

=== 0.0.7 / 2009-04-15

* CHANGE: Adjust TOOLS_DIR initialisation so it looks for a shared 3rdparty folder at the same level as the product folder first, then it looks for a 3rdparty folder inside of the product folder.

* CHANGE: Adjust the Demo's Rakefile to make FxCop ignore assemblies with "Tests" in their filename.

=== 0.0.6 / 2009-04-06

* Move source control to github at http://github.com/petemounce/rake-dotnet

* Change format of readme to markdown for prettiness on the repo homepage

* FIX: YYYYMMDD is invalid for file/assembly-version attribute; use '0' instead in non-svn source-control case.

* FIX: Fix harvesting a web-application when it's not under svn source-control

What’s next? The nice people at NCover have granted me a free license to their code-coverage tool; I’ll be wrapping that in the next major release. I also plan to implement tasks for NUnit and Gallio. That should do for planning, for the time being…

Oh - it occurs to me that I’ve talked about it, but not really shown what it allows (though there is a demo inside of source-control -> DemoRoot). So, here’s the ~35 line Rakefile that gets you:

  • AssemblyInfo watermarking
  • compilation
  • XUnit.NET testing/reporting
  • FxCop reporting
  • simple NCover reporting (as in, only one report choice at the moment)
  • harvesting-to-one-place for publishing to CI artifacts
  • packaging output into zip files for xcopy-deployment (even if xcopy is so … DOS… ;-) )
# Documentation: http://rake.rubyforge.org/ -> Files/doc/rakefile.rdoc
require 'rake'
require 'rake/tasklib'
require 'rake_dotnet'
PRODUCT_NAME = ENV['PRODUCT_NAME'] ? ENV['PRODUCT_NAME'] : 'IncludeCombiner'
COMPANY = ENV['COMPANY'] ? ENV['COMPANY'] : 'NeverRunWithScissors.com'
RDNVERSION = Versioner.new.get
Rake::AssemblyInfoTask.new
bin_out = File.join(OUT_DIR, 'bin')
Rake::MsBuildTask.new({:verbosity=>MSBUILD_VERBOSITY, :deps=>[bin_out, :assembly_info]})
Rake::HarvestOutputTask.new({:deps => [:compile]})
Rake::XUnitTask.new({:options=>{:html=>true,:xml=>true}, :deps=>[:compile, :harvest_output]})
Rake::FxCopTask.new({:deps=>[:compile, :harvest_output]}) do |fxc|
  fxc.dll_list.exclude("#{@suites_dir}/**/*Tests*.dll")
end

Rake::NCoverTask.new({:deps=>[:compile, :harvest_output], :ncover_options=>{:arch=>'amd64'}, :ncover_reporting_options=>{:arch=>'amd64'}})

demo_site = File.join(OUT_DIR, 'Demo.Site')
Rake::HarvestWebApplicationTask.new({:deps=>[:compile]})
Rake::RDNPackageTask.new(name='bin', version=RDNVERSION, {:deps=>[:harvest_output, :xunit]}) do |p|
  p.targets.include("#{bin_out}/*")
end

Rake::RDNPackageTask.new(name='Demo.Site', version=RDNVERSION, {:deps=>[:harvest_webapps, :xunit]}) do |p|
  p.targets.include("#{demo_site}/*")
end

task :default => [:compile, :harvest_output, :xunit, :package]

The Rakefile is from the other thing I’m working on at the moment while I’m at a loose end. Watch this space…