我得到了我也想用于 CI 的测试服务器。
计划是设置 Hudson 监听 git 存储库,在新提交时获取更改,构建解决方案,运行测试(获取输出),如果一切看起来都是绿色并显示 Chuck Norris ,则设置测试环境 Web 应用程序。
我正在努力处理第一部分(git 端口已关闭 atm,但这不是这个问题的重点)和最后一部分。
应用程序本身是使用 .Net 4.0、Asp.Net Mvc 2 RTM 和一堆 3rd 方工具构建的。
起初 - 根本无法构建任何东西 - 下载了 .Net 4.0 sdk 套件,它有所帮助。然后 - 无法构建 Web 项目 - 只是将C:\Program Files\MSBuild\Microsoft\VisualStudio\v10.0\
文件夹内容从我的开发工作站复制到服务器。然后我不得不自己安装 asp.net mvc2 rtm,解决方案终于成功构建。
问题在于我从这里获取的 albacore 构建脚本的最后一步。
这是输出:
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\Domain\bin\Release\Domain.dll
Infra -> C:\temp\buildtest\src\Infrastructure\bin\Release\Infra.dll
持久性 -> C:\temp\ buildtest\src\Persistence\bin\Release\Persistence.dll
应用程序 -> C:\temp\buildtest\src\App\bin\Release\App.dll
Web -> C:\temp\buildtest\src\Web\bin\ Release\Web.dll
UI -> C:\temp\buildtest\src\UI\bin\UI.dll
Unit -> C:\temp\buildtest\src\UnitTests\bin\Release\Unit.dll
集成 -> C: \temp\buildtest\src\Integration\bin\Release\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\Release\Integration.dll共 27 个,0 个失败,0 个跳过,耗时 34.472 秒
未处理的异常:System.TypeInitializationException:“Microsoft.Build.CommandLine.MSBuildApp”的类型初始化程序引发了异常。---> System.IO.FileNotFoundException: 无法加载文件或程序集 'Microsoft.Build.Engine,Version=3.5.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a' 或其依赖项之一。该系统找不到指定的文件。文件名:Microsoft.Build.CommandLine.MSBuildApp..cctor() 中的“Microsoft.Build.Engine, Version=3.5.0.0, Culture=neutral, PublicKeyT oken=b03f5f7f11d50a3a”
警告:程序集绑定日志记录已关闭。要启用程序集绑定失败日志记录,请将注册表值 [HKLM\Software\M icrosoft\Fusion!EnableLog] (DWORD) 设置为 1。注意:与程序集绑定失败日志记录相关的一些性能损失。要关闭此功能,请删除注册表值 [HKLM\Software\Microsoft\Fus ion!EnableLog]。
--- 内部异常堆栈跟踪结束 --- 在 Microsoft.Build.CommandLine.MSBuildApp.Main() F, [2010-09-18T00:35:07.728632 #2072] FATAL -- : MSBuild 失败。请参阅 Build Log F 或 Detail rake aborted!MSBuild 失败。有关详细信息,请参阅构建日志 C:/Ruby191/lib/ruby/gems/1.9.1/gems/albacore-0.1.5/lib/albacore/msbuild.rb:41:in `build_solution'(通过运行任务查看完整跟踪 - 痕迹)
C:\temp\buildtest>
这就是我的长鳍金枪鱼脚本的样子:
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 应用程序?