MS-Build 2017 “Microsoft.WebApplication.targets” відсутній


85

Я намагаюся оновити наш сервер збірки (jenkins) з Visual Studio 2015 до 2017 року. Ми будуємо за допомогою MS-Build. Я завантажив та встановив інструменти MS-Buld, як описано у цій відповіді . Якщо я компілюю свої проекти, я отримую помилку, яку Microsoft.WebApplication.targetsне знайшли.

Детальна помилка:

 error MSB4226: The imported project "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications\Microsoft.WebApplication.targets"

Я виконав пошук у каталозі MS-Build:

PS C:\Program Files (x86)\MSBuild> dir -Recurse -Filter "Microsoft.WebApplication.targets"


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


Mode                LastWriteTime         Length Name                                                                                                                                                                                                            
----                -------------         ------ ----                                                                                                                                                                                                            
-a----       11.01.2012     00:23          19654 Microsoft.WebApplication.targets                                                                                                                                                                                


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


Mode                LastWriteTime         Length Name                                                                                                                                                                                                            
----                -------------         ------ ----                                                                                                                                                                                                            
-a----       22.07.2013     01:25          19995 Microsoft.WebApplication.targets                                                                                                                                                                                


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


Mode                LastWriteTime         Length Name                                                                                                                                                                                                            
----                -------------         ------ ----                                                                                                                                                                                                            
-a----       06.07.2015     21:55          20118 Microsoft.WebApplication.targets                                                                                                                                                                                


    Directory: C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\WebApplications


Mode                LastWriteTime         Length Name                                                                                                                                                                                                            
----                -------------         ------ ----                                                                                                                                                                                                            
-a----       22.07.2013     01:25          19995 Microsoft.WebApplication.targets

Як бачимо, файл існує для старих версій компілятора, але для v15.0 він відсутній.

Я також встановив Visual Studio 2017 на сервері збірки. Проект вдається побудувати, якщо я компілюю з Visual Studio 2017.

Будь-які підказки, як вирішити цю проблему? Одним із можливих рішень є створення символічного посилання від C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0\WebApplicationsточки до старих файлів v14.0 (розташованих нижче C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications).

Дякую



1
У мене виникла проблема з проектом з використанням VS 2019. Як я це виправив, відкривши файл csproj, визначивши рядок <Import Project = "$ (MSBuildExtensionsPath32) \ Microsoft \ VisualStudio \ v14.0 \ WebApplications \ Microsoft.WebApplication.targets "/> та заміна на <Імпорт проекту =" $ (MSBuildExtensionsPath32) \ Microsoft \ VisualStudio \ v $ (VisualStudioVersion) \ WebApplications \ Microsoft.WebApplication.targets "/>
tmutton

Відповіді:


124

Схоже , вам не вистачає навантаження для «Веб - інструменти збірки розвиток»: Microsoft.VisualStudio.Workload.WebBuildTools.

Ви можете встановити його, завантаживши інсталятор інструментів збірки звідси (VS2017) або тут (VS2019), після чого запустіть

vs_buildtools.exe --add Microsoft.VisualStudio.Workload.WebBuildTools

або відкриття vs_buildtools.exeта вибір компонента "Інструменти побудови веб-розробки" в графічному інтерфейсі:

скріншот з графічного інтерфейсу користувача


3
як я можу запустити цю команду, її надання 'vs_buildtools.exe' не розпізнається як внутрішня чи зовнішня помилка команди в інструменті розробника 2017
Developerzzz

26
Якщо ви вже завантажили інсталятор «Інструменти побудови для Visual Studio 2017» ( visualstudio.com/thank-you-downloading-visual-studio/… ), тоді ви можете запустити цей інсталятор, натиснути «Змінити» та встановити галочку «Завдання побудови веб-розробки». "прапорець модуля навантаження. Потім натисніть кнопку «Змінити», і нехай програма встановлення закінчить.
Spiralis

Так, вам потрібно використовувати командний рядок вище, щоб встановити. Ви не можете знайти його в графічному інтерфейсі.
sky91

4
Я встановив Build Tools for Visual Studio 2017за Web development build tasksдопомогою наданого посилання, однак він все ще не створює C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0\WebApplicationsпапку vs_buildtools.exe.. я також не бачу .. Я шукав ціле `c:`
LP13

1
thanks..looks б від VS 2017 року значення $(MSBuildExtensionsPath)було змінено на C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild stackoverflow.com/questions/47077150 / ... , що
LP13

88

Прийнята відповідь вище є технічно правильною, просто неповною, трохи заплутаною, принаймні для мене, і потрібен був один додатковий крок, щоб Visual Build Professional працював.

  1. vs_buildtools.exe технічно не існує. Мені довелося створити запитання з питанням, де знаходиться цей файл. Не було очевидним, що vs_buildtools.exe є vs_buildtools _ *******. Exe і є фактичною програмою встановлення. Крім того, згаданий вище "-add ***" - це просто скорочення. Можна перейти до графічного інтерфейсу та перевірити обидва завдання робочого циклу. Це робить те саме. У мене з’явився файл vs_buildtools, хоча він і не потрібен.

  2. VSB Pro все ще не будував мій проект. Мені випала та сама помилка вище. Секрет соус був просто скопіювати WebApplicationsпапку C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0з C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0. Потім я відновив проект, і все було добре. Я розмістив файл WebApplication.targets у передбачуваному місці.

Чому Microsoft не могла цього зробити, мені не під силу. Крім того, навіщо окрема установка. VS17 встановлює величезну кількість матеріалів. Інструменти побудови маються на увазі, як завжди. Як би там не було.

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


4
Підтверджено, що "Інструменти побудови для Visual Studio 2017" насправді копіює цілі в C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ BuildTools \ MSBuild \ Microsoft \ VisualStudio \ v15.0, тоді як msbuild насправді намагається знайти цілі в C : \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v15.0, тому мені доводиться копіювати папки. Очевидно, перший використовується IDE, а другий - окремий msbuild. Дивно.
ZZZ

1
Не слід нічого копіювати вручну. vs_buildtools.exe - це лише інсталятор Visual Studio. Це допоможе вам встановити Build Tools або Visual Studio. Для обох можна встановити різні робочі навантаження та компоненти. Якщо ви хочете встановити робоче навантаження для Visual Studio, для цього потрібно натиснути кнопку «Змінити». Таким чином ви можете встановити необхідні компоненти.
Володимир Серіх

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

21

У мене виникла подібна проблема після оновлення з Visual Studio 2015 до 2017 р. Коли я намагаюся завантажити проект веб-програми, це видало мені повідомлення про помилку:

Імпортного проекту "C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ WebApplications \ Microsoft.WebApplication.targets" не знайдено. Також спробував знайти "WebApplications \ Microsoft.WebApplication.targets" у резервному шляху (шляху) пошуку для $ (VSToolsPath) - "C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v15.0". Ці шляхи пошуку визначені в "C: \ Users \ xxx \ AppData \ Local \ Microsoft \ VisualStudio \ 15.0_558e146f \ devenv.exe.config". Переконайтеся, що шлях у декларації правильний, і що файл існує на диску в одному із шляхів пошуку.

Рішення цієї помилки я знайшов тут .

У моєму випадку файл .csproj містив такі рядки:

<PropertyGroup>
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">14.0</VisualStudioVersion>
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v14.0</VSToolsPath>
</PropertyGroup>

Після заміни v14.0на v$(VisualStudioVersion)в VSToolPathтезі, проект може бути завантажений.

Я також замінив v14.0на v10.0в VisualStudioVersionтезі, як рішення в наведеної вище посиланням показує. Але для мене це також спрацювало, залишивши його на 14.0.

Ось як в кінці повинні виглядати ці рядки:

<PropertyGroup>
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>

Якщо у вас немає цих рядків у вашому .csproj, вам доведеться додати їх вручну прямо ПЕРЕД цим рядком:

<Import Project="$(VSToolsPath)\Web\Microsoft.Web.Publishing.targets" Condition="'$(VSToolsPath)' != ''" />

У моєму випадку (трохи інше повідомлення про помилку, але така ж проблема) це був такий рядок:

<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />

Здається, проекти, створені у версіях Visual Studio з 2011 року, містять рядки з VSToolsPathперевизначенням, тоді як старіші файли цього не робили. Visual Studio ніколи не додавав їх автоматично під час оновлення до новішої версії VS, саме тому вам слід додавати їх, якщо їх там немає.

Джерело цієї інформації: https://developercommunity.visualstudio.com/content/problem/27735/project-fails-to-load-with-error-regarding-microso.html?childToView=123664#comment-123664 (натисніть Показати більше коментарів, щоб побачити повну тему обговорення - на жаль, я не можу безпосередньо посилатися на коментарі в цьому розділі "більше".)


11

Встановити інструменти для збірки 2017 року легко, з WebBuildToolsуже включеною опцією, використовуючи шоколад . Після встановлення введіть у командному рядку адміністратора наступне:

choco install visualstudio2017buildtools -y

Для VS 2019 це схоже:

choco install visualstudio2019buildtools -y

2
Вам не потрібно встановлювати конкретну версію, ви можете встановити її таким чином, використовуючи Chocolatey і включити прийняту відповідь:cinst visualstudio2017buildtools -params '--add Microsoft.VisualStudio.Workload.WebBuildTools' -y ; cinst microsoft-build-tools -y
brianary

8

Скопіювати WebApplicationsпапку з

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

до

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0

Або у своєму сценарії збірки додайте наступний рядок перед компіляцією

Copy-Item "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications" "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications" -Recurse -Force

Не забудьте запустити його з підвищеними дозволами


3

як створити програму VS 2017 pro, asp.net MVC та побудувати її за допомогою Дженкінса?

використовувати vs 2017 pro як на машині розробника, так і на сервері побудови

Переконайтеся, що для VisualStudio встановлено значення 15
Імпорт проекту = "$ (MSBuildExtensionsPath32) \ Microsoft \ VisualStudio \ v15.0 \ WebApplications \ Microsoft.WebApplication.targets" Condition = "false"

встановіть інструмент msbuild
на C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Professional \ MSBuild \ 15.0 \ Bin \ MSBuild.exe у менеджері глобальних конфігурацій jenkins

На jenkins виконайте пакет команд windows:
retore nugets: "C: \ Program Files (x86) \ Jenkins \ tools \ nuget \ NuGet.exe" Restore "C: \ Program Files (x86) \ Jenkins \ workspace \ theapp_build \ theapp. sln "

За допомогою jenkins виконайте командний пакет Windows:
Файл збірки MSBuild: Аргументи
командного рядка theapp.sln : / nologo / t: restore / t: rebuild / p: Configuration = "Debug" /p:VisualStudioVersion=15.0


2

Для VS 2019 я виправив це, скопіювавши:

C: \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ Enterprise \ MSBuild \ Microsoft \ VisualStudio \ v16.0

до

C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio


Як отримати C: \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ Enterprise \ MSBuild \ Microsoft \ VisualStudio \ v15.0 для VS2019
somegeek

-1

Я просто використовую інсталятор Visual Studio для оновлення Visual Studio Community 2017 , тоді проблема вирішена.

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