代码之家  ›  专栏  ›  技术社区  ›  Arnis Lapsa

如何在不使用Visual Studio的情况下打包ASP.NET Web应用程序?

  •  0
  • Arnis Lapsa  · 技术社区  · 15 年前

    我有一个测试服务器,我也想用它来做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应用程序?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Derick Bailey    15 年前

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

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

    推荐文章