Побудуйте 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 не сумісний. Іншим рішенням, яке трохи лякає, є копіювання цільових файлів з іншої машини. це привело мене далі, але зараз я отримую помилки, яких не вистачає в моїх збірках посилань, які, на мою думку, пов’язані з вихідною проблемою. Чи є інший спосіб?
Зак,

3
Ви на правильному шляху, найпростіший спосіб вирішити проблему - це встановити VS 2010 на ваш сервер збірки. Це трохи тупий інструмент. Другий спосіб - це робити те, що ви робите, отримувати цілі та пов'язані залежності з іншої машини та розгортати саме ці файли на сервері. Небезпека такого підходу полягає в тому, що пакет оновлень VS може змінити скопійовані вами файли, і ваш сервер збірки використовуватиме застарілу версію цих цілей, тоді як розробники використовують оновлені версії.
Джеймс Рід,

Ви маєте на увазі VS2012? Ага. Я перевірю, але я припускаю, що це не порівнянно з win server 2008 r1, оскільки team explorer 2012 не було, але погана подвійна перевірка.
Зак,

1
На жаль, я пропустив біт 2012 року, я думаю, він буде встановлений лише на сервері 2008 r2, оскільки він працює лише з win 7 на стороні клієнта. Я припускаю, що про оновлення ОС на сервері збірки не може бути й мови?
Джеймс Рід,

так, я думав про оновлення серверної ОС. Я збираюся це розглянути, але я не впевнений, чи дозволить мені це зробити.
Зак,

Відповіді:


35

Моя проблема була пов’язана з інсталяцією набору програмного забезпечення для Windows (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. Виберіть наступну опцію на екрані Вказати місцезнаходження: Завантажте пакет SDK для Windows для встановлення на окремому комп’ютері.
  3. Натисніть кнопку Далі.
  4. Дайте відповіді на запитання на екрані Приєднатися до програми покращення взаємодії з клієнтами (CEIP).
  5. На наступному екрані виберіть функцію .NET Framework 4.5 Розробка програмного забезпечення. Скасуйте вибір усіх інших функцій, які можна скасувати.
  6. Виберіть кнопку Завантажити.
  7. Перейдіть до місця завантаження (зазначеного в кроці 2) і знайдіть такі файли інсталятора інструменту .NET Framework 4.5 SDK: 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. Встановіть засоби .NET Framework 4.5 SDK за допомогою командного рядка: Msiexec / i sdk_tools4.msi VSEXTUI = 1

Спасибі Болотний. Я збираюся позначити цю відповідь як правильну, але я просто хотів зазначити кілька речей. Я не збираюся перевіряти це, але ваша відповідь, схоже, може спрацювати. Натомість ми просто оновлюємо сервер. По-друге, чи знаєте ви, чи робило б це таким чином, що дозволило б компонентам оновлюватися при випуску патчів та пакетів оновлень?
Зак

Я дотримувався цих інструкцій із сервером 2008, але, на жаль, я все ще бачу файли .nlp, і mscorlib включається до розгортань за допомогою веб-розгортання
Натан,

1
Дуже дякую. Я використовую Jenkins, і я щойно оновив свій проект, використовуючи .NET 4.5. Коли я надсилаю свою роботу Дженкінсу, він не скаржився на неправильну версію, а скаржився на відсутність збірки System.Runtime. Я вважаю за краще це рішення перед копіюванням файлів вручну, оскільки це рішення простіше автоматизувати.
Ідо Ран

Я використовую 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), яку ви використовуєте, лише щоб переконатися, що вона встановлена ​​прямо у вашій конфігурації.


6
це вирішило проблему для нас +1. Виходячи з maven / java, це горіхи.
NimChimpsky

Посилальні збірки, не встановлені в .NET Framework? MSBuild не націлений. Я не впевнений, що довідкові збори, я думаю, що так.
Кікенет,

Копіювання C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 з машини розробника до тієї самої папки на машині побудови зробило для мене фокус після того, як Team City не зміг скомпілювати рішення .NET 4.5, однак .NET 4.0 рішення раніше робив компіляцію.
Торе Аурстад

+1 для еталонних збірок. Я будую проект 4.5.1 за допомогою Teamcity та MSBuild14, і це було відсутнє посилання на моїй машині агента збірки.
N. Warfield

це дурна проблема, але просто рішення її.
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 забув згадати, у нас є агенти збірки сервера 2012, дякую за роз'яснення
artfulhacker

1
Але в цьому каталозі немає копії msbuild.exe. Я встановив VS2012 на своєму dev PC (не на машині збірки), і все ще не бачу версії 4.5.
прах999

12

У цьому випадку допоможе Microsoft Build Tools 2013 , оскільки на сторінці завантаження описано:

Якщо на вашому комп’ютері не встановлено Visual Studio, ви можете використовувати Build Tools 2013 для створення керованих програм. До цього завантаження також включені компілятори Visual Basic та C #. (У попередніх версіях ці інструменти були включені в окремий .NET Framework.)


1
Трохи більше пояснень може допомогти колегам-програмістам зрозуміти, як працює посилальне посилання, оскільки в майбутньому посилальне посилання може більше не існувати.
NJInamdar

Microsoft Build Tools 2013 для VS 2013 і надто VS 2012 ? У будь-якому випадку, краще встановити Microsoft Build Tools або Visual Studio Agents 2012 stackoverflow.com/a/20373256/206730 ?
Кікенет,

8

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


Дуже дякую. Я завжди дивувався, як дістатись, Microsoft.WebApplication.targetsі ніколи не знав про цю Ізольовану Оболонку!
Вільям Гросс

6

Я вирішую цю проблему за допомогою Visual Studio Agents.

Ви можете спробувати встановити 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 (ізольована) (x86) та оболонка Visual Studio 2012 & 2013 (інтегрована) (x86) без інсталяції агентів VS ?
Кікенет,

Тільки снаряди. Я встановив лише 2013 рік
Андрій
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.