构建ASP.NET MVC 2应用程序的简单自动化

时间:2010-12-06 22:26:14

标签: asp.net-mvc msbuild

美好的一天!

我正在寻找从命令行执行此类任务的解决方案:

  • 编译ASP.NET MVC 2.0应用程序(1个asp.net mvc项目和1个解决方案中的2个类项目)
  • 执行Web.config转换
  • 从编译结果中删除一些文件和文件夹
  • 使用svnversion
  • 运行添加svn修订号的bat文件
  • 运行外部归档程序以压缩发布
  • 仍然可以使用VS
  • 进行调试

我正在使用Visual Web Developer 2010,我的项目已经有Web.Release.configWeb.Debug.config

可以使用MSBuild完成吗?

提前感谢!

3 个答案:

答案 0 :(得分:1)

我不相信MSBuild本身会做你名单上的很多事情。您可以创建一堆脚本来执行此操作。但是,我建议看看Hudson持续集成服务器。它已经可以完成您列表中的许多事情。它是一个基于插件的系统,因此如果不存在插件,您可以自己滚动。此外,还有一个相当活跃的社区,所以你会发现很多博客文章。这是他们网站的链接:

http://hudson-ci.org/

我还写了一篇关于哈德森和.net入门的博客文章。您可能会发现它也很有用:

http://blog.bobcravens.com/2010/03/getting-started-with-ci-using-hudson-for-your-net-projects/

希望这有帮助。

鲍勃

答案 1 :(得分:1)

是的,您应该能够使用MSBuild执行大部分(如果不是全部)任务。查看MSBuild社区任务,它们添加了相当多的功能。

http://msbuildtasks.tigris.org/

HTH

答案 2 :(得分:1)

我通常使用ruby + rake滚动自己。以下内容涉及您列出的大部分内容。

require 'rake/clean'

SELF_PATH = File.dirname(__FILE__)
PATH_TO_ROOT = SELF_PATH
PATH_TO_WEB = "C:\\Dev\\"
PATH_TO_MSBUILD = "C:\\Windows\\Microsoft.NET\\Framework\\v3.5\\msbuild.exe"

CLEAN.exclude("**/core")
CLEAN.include("*.cache", "*.xml", "*.suo", "**/obj", "**/bin", "../Deploy")

task :build do 
  sh "#{PATH_TO_MSBUILD} /v:q #{PATH_TO_ROOT}/HUD.sln"
end

namespace "deploy" do
  desc "Preps the project for deployment"
  task :package, :project_name do |t, args|
    begin
      Rake::Task["clean"].invoke
      Rake::Task["build"].invoke
      Dir.mkdir("../Deploy")
      sh "xcopy .\\#{args.project_name} ..\\Deploy\\#{args.project_name}\\ /S /C /F /Y /exclude:e.txt"
      begin
        sh "xcopy .\\#{args.project_name}\\Web.config.prod ..\\Deploy\\#{args.project_name}\\Web.config /S /C /F /Y" 
      rescue
      end
    rescue Exception=>e
      puts e
    end
  end
end