我有一个测试服务器,我也想用它来做CI。
计划是设置监听Git存储库的Hudson,在新提交时获取更改,构建解决方案,运行测试(获取输出),如果一切看起来都是绿色的,则设置测试环境Web应用程序。
shows Chuck Norris
.
第一部分(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,最终解决方案构建成功。
问题是我从albacore构建脚本的最后一步
here
.
以下是输出:
C:\temp\buildtest>rake-f build.rb
(在C:/temp/buildtest中)
Microsoft(R)生成引擎版本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
app->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
单元->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
\发布\集成.dll
共27次,0次失败,0次跳过,耗时34.472秒
未处理的异常:System.TypeInitializationException:类型初始值设定项fo
r“microsoft.build.commandline.msbuildapp”引发了异常。--->系统.io.fi
LenotFoundException:无法加载文件或程序集“microsoft.build.engine,ve”
rsion=3.5.0.0,culture=neutral,publicKeyToken=b03f75f7f11d50a3a'或其中一个d
附录。系统找不到指定的文件。
文件名:'microsoft.build.engine,version=3.5.0.0,culture=neutral,publickeyt
oken=b03f75f7f11d50a3a'
在microsoft.build.commandline.msbuildapp..cctor()上
警告:程序集绑定日志记录已关闭。
要启用程序集绑定失败日志记录,请设置注册表值[hklm\software\m
ICrosoft\Fusion!启用日志(dword)为1。
注意:存在一些与程序集绑定失败相关的性能损失
拥抱。
要关闭此功能,请删除注册表值[hklm\software\microsoft\fus
离子!启用日志]。
---内部异常堆栈跟踪结束---
在microsoft.build.commandline.msbuildapp.main()上
F,[2010-09-18t00:35:07.728632 2072]致命--:msbuild失败。请参阅生成日志f
或细节
Rake中止了!
MSBuild失败。有关详细信息,请参阅生成日志
C:/ruby191/lib/ruby/gems/1.9.1/gems/albacore-0.1.5/lib/albacore/msbuild.rb:41:in
`构建“解决方案”
(通过运行带有--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应用程序?