【问题标题】:How to package asp.net web application w/o visual studio?如何在没有 Visual Studio 的情况下打包 asp.net Web 应用程序?
【发布时间】:2010-09-17 21:42:43
【问题描述】:

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

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

我正在努力处理第一部分(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,最终解决方案构建成功。

问题在于我从 here 获取的 albacore 构建脚本的最后一步。

这是输出:

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

域 -> C:\temp\buildtest\src\Domain\bin\Release\Domain.dll
基础设施 -> 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
网络 -> 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 \Release\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 之一 附属品。该系统找不到指定的文件。 文件名:'Microsoft.Build.Engine,版本=3.5.0.0,文化=中性,PublicKeyT oken=b03f5f7f11d50a3a' 在 Microsoft.Build.CommandLine.MSBuildApp..cctor()

警告:程序集绑定日志记录已关闭。 要启用程序集绑定失败日志记录,请设置注册表值 [HKLM\Software\M icrosoft\Fusion!EnableLog] (DWORD) 为 1。 注意:有一些与组装绑定失败相关的性能损失 lo 格格。 要关闭此功能,请删除注册表值 [HKLM\Software\Microsoft\Fus ion!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:in `build_solution' (通过使用 --trace 运行任务查看完整跟踪)

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 应用程序?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 我安装了它。虽然这使它成功构建,但不幸的是 - :_CopyWebApplication 目标仍然失败。它也应该工作吗?
    • @Amis:CopyWebApplication 是一个 Visual Studio 函数。你也许可以从 Dev 机器上复制它(MSBuild 目标),但你为什么不在机器上安装 VS 或 WebDeveloper?
    • @Henk 我想这就是我要做的事情。
    • 其实——不需要打包。构建和复制目录就足够了。 Ty Derick 提供了相当不错的工具。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-23
    • 1970-01-01
    • 2010-12-16
    • 1970-01-01
    • 2015-12-09
    • 2014-01-28
    相关资源
    最近更新 更多