Сборка ASP.NET 4.5 без Visual Studio на сервере сборки

Прошло некоторое время с тех пор, как я установил Build Server, поэтому, возможно, я что-то забыл, или, может быть, .NET 4.5 отличается от той версии, с которой я делал это в прошлый раз, но вот моя проблема.

Я пытаюсь настроить сервер сборки для мониторинга репозитория системы управления версиями. Каждый раз, когда что-то меняется, я хочу, чтобы сервер извлекал изменения и строил проект. Если ошибок нет, я хочу развернуть сайт на веб-сайте, запущенном на сервере сборки.

Раньше, когда я делал это, я думал, что смогу сделать это, установив только .NET, но когда я пытаюсь собрать этот проект, я получаю сообщение об ошибке: «C: \ Program Files \ MSBuild \ Microsoft \ VisualStudio \ v11 .0 \ WebApplications \ Microsoft.WebApplication.targets "отсутствует, и если я пойду и посмотрю, то вижу, что он отсутствует. Фактически нет целевых файлов Visual Studio 11.

После долгих раздумий и головокружения я вышел и получил "Windows 8 / .NET 4.5 SDK", думая, что .NET 4.5 SDK может установить целевые файлы, которые мне нужны, но этого не произошло, если я каким-то образом не установил его неправильно. .

Итак, что мне нужно поставить на Build Server, чтобы проект был собран. Я бы предпочел не устанавливать полную версию Visual Studio 2012.


person Zack    schedule 17.10.2012    source источник
comment
Я провел небольшое исследование с тех пор, как опубликовал это. Дай мне знать, если я пойду неверным путем. Похоже, это была проблема и с Visual Studio 2010, и похоже, что люди решили ее несколькими способами. Один из них - установить Visual Studio Team Explorer. Я пробовал это, но мой сервер - Win 2008 r1, а VSTE2012 несовместим. Другое решение, которое немного пугает, - скопировать целевые файлы с другой машины. это помогло мне продвинуться дальше, но теперь я получаю ошибки, связанные с отсутствием моих эталонных сборок, что, как я предполагаю, связано с исходной проблемой. Есть другой способ?   -  person Zack    schedule 18.10.2012
comment
Вы на правильном пути, простой способ решить проблему - установить VS 2010 на ваш сервер сборки. Хотя это немного тупой инструмент. Второй способ - сделать то, что вы делаете, получить цели и связанные с ними зависимости от другого компьютера и развернуть только эти файлы на сервере. Опасность этого подхода заключается в том, что пакет обновления VS может изменить файлы, которые вы скопировали, и ваш сервер сборки будет использовать устаревшую версию этих целей, в то время как ваши разработчики используют обновленные версии.   -  person James Reed    schedule 18.10.2012
comment
Вы имеете в виду VS2012? Ага. Я проверю, но предполагаю, что это не сравнимо с win server 2008 r1, так как team explorer 2012 не было, но я плохо проверил.   -  person Zack    schedule 18.10.2012
comment
Извините, я пропустил бит 2012 года, я думаю, он будет установлен только на server 2008 r2, поскольку он работает только с win 7 на стороне клиента. Полагаю, об обновлении ОС на сервере сборки не может быть и речи?   -  person James Reed    schedule 19.10.2012
comment
да, я думал об обновлении ОС сервера. Я собираюсь изучить это, но не уверен, что мне позволят.   -  person Zack    schedule 19.10.2012
comment
похоже мы собираемся обновить сервер   -  person Zack    schedule 20.10.2012


Ответы (6)


Моя проблема была связана с установкой Windows Software Development Kit (SDK) для Windows 8 в Windows 2008 Box. Если вы прочтете эту страницу дальше, то найдете заголовок с надписью «Инструменты SDK .NET Framework 4.5 для Windows Vista и Windows Server 2008». Это говорит вам:

  1. Запустите установщик Windows SDK для Windows 8 в поддерживаемой операционной системе (например, Windows 7 или Windows 8).
  2. На экране «Укажите местоположение» выберите следующий вариант: Загрузите Windows SDK для установки на отдельный компьютер.
  3. Нажмите кнопку "Далее".
  4. Ответьте на вопросы на экране «Присоединяйтесь к программе улучшения качества программного обеспечения» (CEIP).
  5. На следующем экране выберите компонент .NET Framework 4.5 Software Development Kit. Отмените выбор всех других функций, которые можно отменить.
  6. Нажмите кнопку "Загрузить".
  7. Перейдите в место загрузки (указанное на шаге 2) и найдите следующие файлы установщика инструментария SDK .NET Framework 4.5: sdk_tools4.msi, sdk_tools4.cab
  8. Вы можете скопировать эти файлы на компьютер с Windows Vista или Windows 2008 Server в вашей организации. Эти файлы необходимо скопировать в тот же каталог на компьютере с Windows Vista или Windows 2008 Server. Примечание. Не распространяйте эти файлы за пределами вашей организации или в составе любого другого установщика.
  9. На компьютере с Windows Vista или Windows 2008 Server ознакомьтесь с условиями лицензии здесь.
  10. Убедитесь, что .NET Framework 4.5 уже установлен на компьютере. В противном случае загрузите и установите .NET Framework 4.5 с сайта www.microsoft.com.
  11. Откройте командную строку с правами администратора.
  12. Перейдите в каталог, в который были скопированы файлы установщика .NET Framework 4.5 SDK Tools.
  13. Установите инструменты SDK .NET Framework 4.5 с помощью командной строки: Msiexec / i sdk_tools4.msi VSEXTUI = 1
person SwampyFox    schedule 23.10.2012
comment
Спасибо Swampy. Я собираюсь отметить этот ответ как правильный, но я просто хотел упомянуть пару вещей. Я не собираюсь это проверять, но ваш ответ, похоже, может сработать. Вместо этого мы просто обновляем сервер. Во-вторых, знаете ли вы, могло бы ли это сделать таким образом, чтобы компоненты могли обновляться при выпуске исправлений и пакетов обновления? - person Zack; 23.10.2012
comment
Я выполнил эти инструкции с Server 2008, но, к сожалению, я все еще вижу файлы .nlp, а mscorlib включается в развертывания с использованием веб-развертывания. - person Nathan; 16.11.2012
comment
Большое тебе спасибо. Я использую Jenkins и только что обновил свой проект, чтобы использовать .NET 4.5. Когда я отправляю свою работу в Jenkins, он не жаловался на неправильную версию, он жаловался на отсутствие сборки System.Runtime. Я предпочитаю это решение копированию файлов вручную, потому что это решение легче автоматизировать. - person Ido Ran; 14.07.2013
comment
Я использую Windows Server 2012, и у меня есть VS2012 в Windows 8 (машина разработки). Мне нужны только цели для MsBuild C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 \. SDK включает в себя гораздо больше, не так ли? - person Kiquenet; 16.10.2014

Чтобы работать на своем CI-сервере без Visual Studio, вам нужно всего лишь скопировать несколько папок с машины разработки в то же место на CI-сервере. SDK устанавливать не нужно.

VS 2015:

  • C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ Web
  • C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ WebApplications

VS 2013:

  • C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v12.0 \ Web
  • C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v12.0 \ WebApplications

VS 2012:

  • C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ Web
  • C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ WebApplications

VS 2010:

  • C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ Web
  • C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ WebApplications

.NET 4.6:

  • C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.6

.NET 4.5.2:

  • C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.5.2

.NET 4.5.1:

  • C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.5.1

.NET 4.5:

  • C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.5

.NET 4.0.1:

  • C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.0.1

.NET 4.0:

  • C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.0

Или, как Мэтт предложил, вы можете скопировать их в подкаталог вашего проекта и измените расположение <MSBuildExtensionsPath32> в файле MSBuild (обычно .csproj или .vbproj).

Как только вы это сделаете, ваш проект будет скомпилирован.

Вы также должны явно указать для переменной среды VisualStudioVersion версию Visual Studio (10.0 для VS2010, 11.0 для VS2012, 12.0 для VS2013, 14.0 для VS2015), которую вы используете, просто чтобы убедиться, что она установлена ​​прямо в вашей конфигурации.

person NightOwl888    schedule 15.10.2013
comment
это решило проблему для нас +1. Исходя из maven / java, это безумие. - person NimChimpsky; 10.04.2014
comment
Эталонные сборки не установлены вместе с .NET Framework? MSBuild не нацелен. Я не уверен в справочных сборках, думаю, что да. - person Kiquenet; 16.10.2014
comment
Копирование C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 с машины разработчика в ту же папку на машине сборки помогло мне после того, как Team City не смогла скомпилировать решение .NET 4.5, однако .NET 4.0 решение ранее компилировалось. - person Tore Aurstad; 30.03.2016
comment
+1 для эталонных сборок. Я создаю проект 4.5.1 с использованием Teamcity и MSBuild14, и это отсутствующее звено на моем компьютере с агентом сборки. - person N. Warfield; 17.10.2016
comment
это глупая проблема, но простое решение. - person cori; 10.12.2016

Из msdn:

Windows SDK больше не поставляется с полной средой сборки из командной строки. Вы должны установить компилятор и среду сборки отдельно. Если вам требуется полная среда разработки, включающая компиляторы и среду сборки, вы можете загрузить Visual Studio 2012 Express, который включает соответствующие компоненты Windows SDK.

Чтобы исправить это, мне пришлось скопировать папку C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5 с моей машины разработки (на которой, кстати, есть Visual Studio 2012) на агенты сборки. После этой операции Team City больше не сообщала об ошибках, и файл mscorlib.dll не выводился в папку bin.

person Marius    schedule 27.02.2013
comment
спасибо, это исправило для меня, без необходимости загружать sdk. (или любой из шагов в принятом ответе) - person Cohen; 15.03.2013
comment
Это определенно должен быть принятый ответ. Намного проще, так как у вас точно уже есть машина с реф-сборками. - person Josh Kodroff; 02.05.2013
comment
@artfulhacker VS 2012 и Win 8 SDK не устанавливаются на Win2k8 R1. Если вы используете R1, как и я, вам нужно скопировать сборки ref. - person Josh Kodroff; 10.05.2013
comment
@JoshKodroff забыл упомянуть, у нас есть агенты сборки server 2012, спасибо за разъяснения - person artfulhacker; 13.05.2013
comment
Но в этом каталоге нет копии msbuild.exe. Я установил VS2012 на свой компьютер разработчика (а не на машину сборки), и я все еще не вижу версию 4.5. - person ashes999; 13.05.2013
comment
+1, я использую Jenkins, и это решение отлично работало в Windows 2008 R2. - person Alfredo Cavalcanti; 01.05.2014

Microsoft Build Tools 2013 поможет в этом случае, поскольку его страница загрузки описывает:

Если на вашем компьютере не установлена ​​Visual Studio, вы можете использовать Build Tools 2013 для создания управляемых приложений. Компиляторы Visual Basic и C # также включены в эту загрузку. (В более ранних версиях эти инструменты были включены в автономную платформу .NET Framework.)

person Rajesh    schedule 16.06.2014
comment
Дополнительное объяснение может помочь другим программистам понять, как работает справочная ссылка, поскольку в будущем ссылочная ссылка может больше не существовать. - person Nagama Inamdar; 16.06.2014
comment
Инструменты сборки Microsoft 2013 для VS 2013 и VS 2012? В любом случае, лучше установить Microsoft Build Tools или Visual Studio Agents 2012 stackoverflow.com/ а / 20373256/206730? - person Kiquenet; 16.10.2014

Мой отдел. любит минималистичный подход к тому, что установлено на наших машинах для сборки Win 7. Однако нам не нравится просто копировать и вставлять файлы / папки из-за потенциальных проблем с ключами реестра. Вместо установки VS 2013 я установил следующие гораздо более мелкие и бесплатные компоненты. Теперь команда разработчиков может успешно создавать веб-приложения VS 2013.

person ckkkitty    schedule 24.03.2015
comment
Большое спасибо. Я всегда задавался вопросом, как получить Microsoft.WebApplication.targets, и я никогда не знал об этой изолированной оболочке! - person William Gross; 02.02.2016

Решаю эту проблему с помощью агентов Visual Studio.

Вы можете попробовать установить Visual Studio Agents 2012.

http://www.microsoft.com/en-us/download/details.aspx?id=38186

person Jean    schedule 04.12.2013
comment
Не работает для VS2013. Я установил агент и контроллер, но C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v12.0 не был создан - person Guillaume; 26.06.2014
comment
Конечно, также доступны агенты для Visual Studio 2013. - для тех, кто читает этот ответ, имея в виду VS 2013, а не VS 2012. - person J0e3gan; 29.07.2014
comment
Это действительно работает! Вам просто нужно установить оболочку Visual Studio 2013 (изолированную) (x86), а не оболочку Visual Studio 2013 (интегрированную) (x86) - person Andrii; 03.09.2014
comment
@Andrii Требуется установка Visual Studio Agents 2012? или только Visual Studio 2012 и 2013 Shell (изолированные) (x86) и Visual Studio 2012 и 2013 Shell (интегрированные) (x86) без установки VS Agents? - person Kiquenet; 16.10.2014
comment
Только снаряды. Я установил только 2013 - person Andrii; 19.11.2014
comment
У меня это не сработало. Я вижу только два файла и установил оба. v11.0 не добавляется. Копирование файлов вручную из devbox действительно сработало (как упоминалось в популярном ответе). - person P.Brian.Mackey; 02.11.2016