Как упаковать веб-приложение asp.net без визуальной студии? - PullRequest
0 голосов
/ 18 сентября 2010

У меня есть тестовый сервер, который я бы тоже хотел использовать для CI.

План состоит в том, чтобы настроить Hudson, который прослушивает git-репозиторий, при новой фиксации извлекает изменения, строит решение, запускает тесты (выбирает выходные данные), настраивает веб-приложение среды тестирования, если все выглядит зеленым и показывает Chuck Norris .

Я борюсь с первой частью (git порты закрыты, но не в этом вопросе) и последней частью.

Само приложение построено с использованием .Net 4.0, Asp.Net Mvc 2 RTM и набора сторонних инструментов.

Сначала - вообще ничего не смог собрать - скачал .Net 4.0 sdk kit, и это помогло. Тогда - не удалось создать веб-проект - просто скопировал содержимое папки 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] Copyright (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
Пользовательский интерфейс -> 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)
Copyright (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)
Copyright (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: инициализатор типа fo r 'Microsoft.Build.CommandLine.MSBuildApp' выдал исключение. ---> System.IO.Fi leNotFoundException: не удалось загрузить файл или сборку 'Microsoft.Build.Engine, Ve rsion = 3.5.0.0, Культура = нейтральный, PublicKeyToken = b03f5f7f11d50a3a 'или один из его d ependencies. Система не может найти указанный файл. Имя файла: 'Microsoft.Build.Engine, версия = 3.5.0.0, культура = нейтральная, PublicKeyT Oken = b03f5f7f11d50a3a» в Microsoft.Build.CommandLine.MSBuildApp..cctor ()

WRN: регистрация привязки сборки выключена. Чтобы включить ведение журнала ошибок привязки сборки, установите значение реестра [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] FATAL -: MSBuild Failed. Смотрите Build Log F или подробно грабли прерваны! MSBuild не удалось. Смотрите журнал сборки для деталей С: /Ruby191/lib/ruby/gems/1.9.1/gems/albacore-0.1.5/lib/albacore/msbuild.rb: 41: в `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

Итак ... Чего не хватает? Как заставить это работать?

Как упаковать веб-приложение asp.net без визуальной студии?

1 Ответ

1 голос
/ 18 сентября 2010

Установите Windows 7 SDK на свой CI-сервер, который включает в себя все, что нужно для создания приложений .NET 4 на CI-сервере.Это позаботится обо всех зависимостях, которые вам нужны в GAC, и избавит вас от необходимости вручную копировать кучу файлов с рабочей станции разработки.

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

...