如何用Visual Studio打包asp.net web应用程序?

时间:2010-09-17 21:42:43

标签: .net asp.net-mvc deployment albacore

我也有测试服务器,我也想用于CI。

计划是设置监听git存储库的Hudson,新提交获取更改,构建解决方案,运行测试(获取输出),如果一切看起来都是绿色和shows Chuck Norris,则设置测试环境Web应用程序。

我正在努力解决第一部分(git端口已关闭atm但这不是问题的重点)和最后一部分。

应用程序本身是使用.Net 4.0,Asp.Net Mvc 2 RTM和一堆第三方工具构建的。

起初 - 无法构建任何东西 - 下载.Net 4.0 sdk套件并且它有所帮助。然后 - 无法构建Web项目 - 只是将C:\Program Files\MSBuild\Microsoft\VisualStudio\v10.0\文件夹内容从我的开发工作站复制到服务器。然后我不得不自己安装asp.net mvc2 rtm,最终解决方案正在成功构建。

问题出在我从here获取的长鳍金枪鱼构建脚本的最后一步。

这是输出:

  

C:\ temp \ buildtest> rake -f build.rb   (在C:/ temp / buildtest中)   Microsoft(R)Build Engine版本4.0.30319.1   [Microsoft .NET Framework,版本4.0.30319.1]   版权所有(C)Microsoft Corporation 2007.保留所有权利。

     

域名 - > C:\ TEMP \ buildtest的\ src \域\ BIN \发布\ Domain.dll
    Infra - > C:\ TEMP \ buildtest的\ src \基础设施\ BIN \发布\ Infra.dll
    持久性 - > C:\ TEMP \ buildtest的\ src \持久性\ BIN \发布\ Persistence.dll
    应用 - > C:\ TEMP \ buildtest的\ src \软件\ BIN \发布\ App.dll
    网络 - > C:\ TEMP \ buildtest的\ src \网络\ BIN \发布\ Web.dll
    UI - > C:\ TEMP \ buildtest的\ src \ UI \ BIN \ UI.dll
    单位 - > C:\ TEMP \ buildtest的\ src \单元测试\ BIN \发布\ Unit.dll
    整合 - > C:\ TEMP \ buildtest的\ src \集成\ BIN \发布\ Integration.dll
  xUnit.net控制台测试运行器(32位.NET 4.0.30319.1)
  版权所有(C)2007-10 Microsoft Corporation。

     

xunit.dll:版本1.6.1.1521
  测试程序集:C:\ temp \ buildtest \ src \ UnitTests \ bin \ Release \ src \ UnitTests \ bin \ Release \ Unit.dll

     总共84次,0次失败,0次跳过,耗时9.560秒
  xUnit.net控制台测试运行器(32位.NET 4.0.30319.1)
  版权所有(C)2007-10 Microsoft Corporation。

     

xunit.dll:版本1.6.1.1521
  测试程序集:C:\ temp \ buildtest \ src \ Integration \ bin \ Release \ src \ Integration \ bin   \发布\ Integration.dll

     总共27次,0次失败,0次跳过,耗时34.472秒

     

未处理的异常:System.TypeInitializationException:类型初始值设定项   r'Microsoft.Build.CommandLine.MSBuildApp'引发了异常。 ---> System.IO.Fi   leNotFoundException:无法加载文件或程序集'Microsoft.Build.Engine,Ve   rsion = 3.5.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或其中一个d   ependencies。该系统找不到指定的文件。   文件名:'Microsoft.Build.Engine,Version = 3.5.0.0,Culture = neutral,PublicKeyT   奥肯= b03f5f7f11d50a3a”      在Microsoft.Build.CommandLine.MSBuildApp..cctor()

     

警告:装配绑定日志记录已关闭。   要启用程序集绑定失败日志记录,请设置注册表值[HKLM \ Software \ M.   icrosoft \ Fusion!EnableLog](DWORD)为1。   注意:程序集绑定失败会导致一些性能损失   gging。   要关闭此功能,请删除注册表值[HKLM \ Software \ Microsoft \ Fus   离子!EnableLog]。

     

---内部异常堆栈跟踪结束---      在Microsoft.Build.CommandLine.MSBuildApp.Main()   F,[2010-09-18T00:35:07.728632#2072]致命 - :MSBuild失败。请参阅构建日志F.   或细节   耙子流产了!   MSBuild失败。请参阅构建日志详细信息   C:/Ruby191/lib/ruby/gems/1.9.1/gems/albacore-0.1.5/lib/albacore/msbuild.rb:41:在    `build_solution”   (通过使用--trace运行任务查看完整跟踪)

     

C:\ TEMP \ buildtest>

这就是我的albacore脚本的样子:

require 'rubygems'
require 'albacore'
task :default => :publish

desc "Builds Interreg solution"
msbuild :build do |m|
  m.path_to_command = File.join(ENV["windir"], 
    "Microsoft.NET", "Framework", "v4.0.30319", "MSBuild.exe")
  m.properties :configuration => :Release
  m.targets :Clean, :Build
  m.solution = "Interreg.sln"
  m.verbosity = "minimal"
end

desc "Runs some tests"
xunit :tests => :build do |x|
  x.path_to_command = "lib/xunitnet/xunit.console.clr4.x86.exe"
  x.assemblies "src/UnitTests/bin/Release/Unit.dll",
    "src/Integration/bin/Release/Integration.dll"
  x.html_output = "doc"
end

desc "Publishes web application"
msbuild :publish=>:tests do |m|
  m.properties={:configuration=>:Release}
  m.targets [:ResolveReferences, :_CopyWebApplication]
  m.properties={
   :webprojectoutputdire=>"c:/temp/outputdir/",
   :outdir=>"c:/temp/outputdir/bin/"
  }
  m.solution="src/UI/UI.csproj"
end

所以...缺少什么?如何使它工作?

如何使用visual studio打包asp.net web应用程序?

1 个答案:

答案 0 :(得分:1)

在CI服务器上安装Windows 7 SDK,其中包括在CI服务器上构建.NET 4应用程序所需的一切。这将处理您在GAC中所需的所有依赖项,并防止您必须从开发工作站手动复制一堆文件。

http://msdn.microsoft.com/en-us/windows/bb980924.aspx