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

81

Прошло некоторое время с тех пор, как я установил 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.

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

Ответы:

35

Моя проблема была связана с установкой 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
SwampyFox
источник
Спасибо, Свомпи. Я собираюсь отметить этот ответ как правильный, но я просто хотел упомянуть пару вещей. Я не собираюсь это проверять, но ваш ответ, похоже, может сработать. Вместо этого мы просто обновляем сервер. Во-вторых, знаете ли вы, могло бы ли это сделать так, чтобы компоненты обновлялись при выпуске исправлений и пакетов обновления?
Zack
Я выполнил эти инструкции с Server 2008, но, к сожалению, я все еще вижу файлы .nlp, а mscorlib включается в развертывания с использованием веб-развертывания
Натан
1
Большое спасибо. Я использую Jenkins и только что обновил свой проект, чтобы использовать .NET 4.5. Когда я отправляю свою работу в Jenkins, он не жаловался на неправильную версию, он жалуется на отсутствие сборки System.Runtime. Я предпочитаю это решение копированию файлов вручную, потому что это решение легче автоматизировать.
Ido Ran
Я использую Windows Server 2012, и у меня есть VS2012 в Windows 8 (машина разработки). Только мне нужны цели для MsBuild "C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 \. SDK включает гораздо больше, не так ли?"
Kiquenet
84

Чтобы работать на вашем 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), которую вы используете, просто чтобы убедиться, что она установлена ​​прямо в вашей конфигурации.

НочьСова888
источник
6
это решило проблему для нас +1. Исходя из maven / java, это безумие.
NimChimpsky
Эталонные сборки не установлены вместе с .NET Framework? MSBuild не предназначен. Я не уверен в Справочных сборках, думаю, что да.
Kiquenet
Копирование C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 с машины разработчика в ту же папку на машине сборки помогло мне после того, как Team City не смогла скомпилировать решение .NET 4.5, однако .NET 4.0 решение ранее компилировалось.
Tore Aurstad
+1 для эталонных сборок. Я создаю проект 4.5.1, используя Teamcity и MSBuild14, и это отсутствующее звено на моем компьютере с агентом сборки.
Н. Варфилд
это глупая проблема, но простое решение.
Cori
25

Из 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.

Мариус
источник
спасибо, это исправило для меня, без необходимости загружать sdk. (или любой из шагов в принятом ответе)
Коэн
1
Это определенно должен быть принятый ответ. Намного проще, ведь у вас точно уже есть машина с реф-сборками.
Джош Кодрофф
1
@artfulhacker VS 2012 и Win 8 SDK не устанавливаются на Win2k8 R1. Если вы используете R1, как и я, вам нужно скопировать сборки ref.
Джош Кодрофф
@JoshKodroff забыл упомянуть, у нас есть агенты сборки server 2012, спасибо за
пояснение
1
Но в этом каталоге нет копии msbuild.exe. Я установил VS2012 на свой компьютер разработчика (а не на машину сборки), и я все еще не вижу версии 4.5.
ashes999
12

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

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

Раджеш
источник
1
Дополнительное объяснение может помочь другим программистам понять, как работает справочная ссылка, поскольку в будущем справочная ссылка может больше не существовать.
NJInamdar
Инструменты сборки Microsoft 2013 для VS 2013 и VS 2012 ? В любом случае, лучше установить Microsoft Build Tools или Visual Studio Agents 2012 stackoverflow.com/a/20373256/206730 ?
Kiquenet
8

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

ckkkitty
источник
Огромное спасибо. Я всегда задавался вопросом, как получить, Microsoft.WebApplication.targetsи никогда не знал об этой изолированной оболочке!
Уильям Гросс
6

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

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

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

Жан
источник
Не работает для VS2013. Я установил агент и контроллер, но C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v12.0 не был создан
Гийом
1
Конечно, также доступны агенты для Visual Studio 2013 - для тех, кто читает этот ответ, имея в виду VS 2013, а не VS 2012.
J0e3gan
2
Это действительно работает! Вам просто нужно установить оболочку Visual Studio 2013 (изолированную) (x86), а не оболочку Visual Studio 2013 (интегрированную) (x86)
Андрей
@Andrii Требуется установка Visual Studio Agents 2012? или только Visual Studio 2012 и 2013 Shell (изолированный) (x86) и Visual Studio 2012 и 2013 Shell (интегрированный) (x86) без установки VS Agents ?
Kiquenet
Только снаряды. Я установил только 2013
Андрей