Brakuje MS-Build 2017 „Microsoft.WebApplication.targets”

85

Próbuję zaktualizować nasz buildserver (jenkins) z Visual Studio 2015 do 2017. Budujemy za pomocą MS-Build. Pobrałem i zainstalowałem narzędzia MS-Buld zgodnie z opisem w tej odpowiedzi . Jeśli kompiluję projekty, pojawia się błąd, Microsoft.WebApplication.targetsktórego nie znaleziono.

Szczegółowy błąd:

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

Wykonałem wyszukiwanie w katalogu 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

Jak widać plik istnieje dla starszych wersji kompilatora, ale dla wersji 15.0 go brakuje.

Zainstalowałem również Visual Studio 2017 na serwerze kompilacji. Projekt pomyślnie się skompiluje, jeśli skompiluję za pomocą programu Visual Studio 2017.

Jakieś wskazówki, jak rozwiązać ten problem? Jednym z możliwych rozwiązań jest wygenerowanie dowiązania symbolicznego z C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0\WebApplicationspunktu do starych plików 14.0 (znajdujących się pod C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications).

Dzięki

Moerwald
źródło
1
Miałem ten problem z projektem korzystającym z VS 2019. Jak go naprawiłem, otwierając plik csproj, identyfikując wiersz <Import Project = "$ (MSBuildExtensionsPath32) \ Microsoft \ VisualStudio \ v14.0 \ WebApplications \ Microsoft.WebApplication.targets "/> i zastąpienie przez <Import Project =" $ (MSBuildExtensionsPath32) \ Microsoft \ VisualStudio \ v $ (VisualStudioVersion) \ WebApplications \ Microsoft.WebApplication.targets "/>
tmutton

Odpowiedzi:

124

Wygląda brakuje obciążenia dla „internetowych narzędzi budowania rozwoju”: Microsoft.VisualStudio.Workload.WebBuildTools.

Możesz go zainstalować, pobierając instalator narzędzi do kompilacji stąd (VS2017) lub tutaj (VS2019), a następnie uruchamiając

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

lub otwieranie vs_buildtools.exe i wybieranie komponentu „Narzędzia do tworzenia aplikacji internetowych” w interfejsie GUI:

zrzut ekranu z GUI

Martin Ullrich
źródło
3
jak mogę uruchomić to polecenie, jego podanie `` vs_buildtools.exe '' nie jest rozpoznawane jako wewnętrzny lub zewnętrzny błąd polecenia w narzędziu programistycznym 2017
Developerzzz
26
Jeśli już pobrałeś instalator „Build Tools for Visual Studio 2017” ( visualstudio.com/thank-you-downloading-visual-studio/… ), możesz uruchomić ten instalator, nacisnąć przycisk Modyfikuj i zaznaczyć pole „Zadania tworzenia aplikacji internetowych pole wyboru modułu obciążenia. Następnie kliknij przycisk Modyfikuj i pozwól instalatorowi zakończyć.
Spiralis,
Tak, aby zainstalować, musisz użyć powyższego wiersza poleceń. Nie możesz go znaleźć w GUI.
sky91
4
Zainstalowałem Build Tools for Visual Studio 2017z Web development build taskspodanym linkiem, ale nadal nie tworzy C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0\WebApplicationsfolderu..Także nie widzę ... vs_buildtools.exePrzeszukałem cały
plik
1
dzięki ... wygląda jak z VS 2017 wartość $(MSBuildExtensionsPath)została zmieniona na C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild stackoverflow.com/questions/47077150/, że
LP13
88

Przyjęta powyżej odpowiedź jest technicznie poprawna, tylko niepełna, nieco zagmatwana, przynajmniej dla mnie, i wymagała jednego dodatkowego kroku, aby Visual Build Professional działał.

  1. vs_buildtools.exe technicznie nie istnieje. Musiałem utworzyć pytanie z pytaniem, gdzie jest ten plik. Nie było oczywiste, że vs_buildtools.exe to vs_buildtools _ *******. Exe i jest rzeczywistym programem instalacyjnym. Dodatkowo wspomniane powyżej „-add ***” jest tylko skrótem. Można przejść do GUI i sprawdzić oba zadania przepływu pracy. To robi to samo. Skończyło się na tym, że miałem plik vs_buildtools, chociaż go nie potrzebowałem.

  2. VSB Pro nadal nie zbudowało mojego projektu. Zostałem wyrzucony ten sam błąd powyżej. Sekretem było po prostu skopiowanie WebApplicationsfolderu C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0do C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0. Następnie odbudowałem projekt i wszystko było w porządku. Umieściłem plik WebApplication.targets w oczekiwanej lokalizacji.

Dlaczego Microsoft nie mógł tego zrobić, jest poza mną. Po co też osobna instalacja. VS17 instaluje ogromną ilość rzeczy. Narzędzia do budowania są dorozumiane, jak zawsze. Cokolwiek.

Publikuję tę odpowiedź, mam nadzieję, że pomoże ona innym. Wpadłem w pułapkę i straciłem sporo czasu, ponieważ mój projekt się nie budował. Mam nadzieję, że ta odpowiedź trochę wyjaśnia.

Sarah Weinberger
źródło
4
Potwierdzono, że „Build Tools for Visual Studio 2017” faktycznie kopiuje obiekty docelowe do C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ BuildTools \ MSBuild \ Microsoft \ VisualStudio \ v15.0, podczas gdy msbuild faktycznie próbuje zlokalizować cele w C : \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v15.0, więc muszę skopiować foldery. Najwyraźniej pierwsza jest używana przez IDE, a druga jest używana przez samodzielny msbuild. Dziwne.
ZZZ
1
Nie powinieneś niczego kopiować ręcznie. vs_buildtools.exe to po prostu Instalator programu Visual Studio. Pomaga w zainstalowaniu narzędzi do kompilacji lub programu Visual Studio. W obu przypadkach można zainstalować różne obciążenia i składniki. Jeśli chcesz zainstalować obciążenie dla programu Visual Studio, musisz kliknąć przycisk „Modyfikuj”. W ten sposób możesz zainstalować wymagane komponenty.
Vladimir Serykh,
2
Jasne, ale problem polega na tym, że instalator programu Visual Studio nie wydaje się niezawodnie umieszczać folderu WebApplications w obu potrzebnych lokalizacjach. Kopiowanie ręczne, jak zasugerowała Sarah, jest jedynym sposobem, w jaki udało mi się niezawodnie uruchomić kompilacje na moim komputerze deweloperskim.
Bart Przeczytaj
21

Miałem podobny problem po uaktualnieniu z Visual Studio 2015 do 2017. Kiedy próbuję załadować projekt aplikacji internetowej, wyświetlił mi się komunikat o błędzie:

Nie znaleziono zaimportowanego projektu „C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ WebApplications \ Microsoft.WebApplication.targets”. Próbowano również znaleźć „WebApplications \ Microsoft.WebApplication.targets” w zastępczych ścieżkach wyszukiwania dla $ (VSToolsPath) - „C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v15.0”. Te ścieżki wyszukiwania są zdefiniowane w „C: \ Users \ xxx \ AppData \ Local \ Microsoft \ VisualStudio \ 15.0_558e146f \ devenv.exe.config”. Sprawdź, czy ścieżka w deklaracji jest poprawna i czy plik istnieje na dysku w jednej ze ścieżek wyszukiwania.

Rozwiązanie tego błędu znalazłem tutaj .

W moim przypadku plik .csproj zawierał następujące wiersze:

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

Po wymianie v14.0przez v$(VisualStudioVersion)wVSToolPath tagu projektu można było wczytać.

Zastąpiłem też v14.0przez v10.0wVisualStudioVersion tagu w postaci roztworu w wyżej pokazuje łącza. Ale dla mnie to też zadziałało, pozostawiając go na 14,0.

Oto jak te linie powinny wyglądać na końcu:

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

Jeśli nie masz tych wierszy w swoim .csproj, musisz dodać je ręcznie tuż PRZED tą linią:

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

W moim przypadku (nieco inny komunikat błędu, ale ten sam problem) był to ten wiersz:

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

Wygląda na to, że projekty tworzone w wersjach Visual Studio od 2011 roku zawierają wiersze z rozszerzeniem VSToolsPath redefinicją, podczas gdy starsze pliki nie. Program Visual Studio nigdy nie dodał ich automatycznie podczas uaktualniania do nowszej wersji VS, dlatego należy je dodać, jeśli ich tam nie ma.

Źródło tych informacji: https://developercommunity.visualstudio.com/content/problem/27735/project-fails-to-load-with-error-regarding-microso.html?childToView=123664#comment-123664 (kliknij Pokaż więcej komentarzy, aby zobaczyć cały wątek dyskusji - niestety nie mogę bezpośrednio linkować do komentarzy w tej sekcji "więcej".)

Tobias
źródło
11

Za WebBuildToolspomocą czekolady łatwo jest zainstalować narzędzia do kompilacji 2017, z już dołączoną opcją . Po zainstalowaniu wpisz następujące polecenie w wierszu polecenia administratora:

choco install visualstudio2017buildtools -y

W przypadku VS 2019 jest podobnie:

choco install visualstudio2019buildtools -y
alastairtree
źródło
2
Nie musisz instalować konkretnej wersji, możesz ją zainstalować w ten sposób za pomocą Chocolatey i uwzględnić zaakceptowaną odpowiedź:cinst visualstudio2017buildtools -params '--add Microsoft.VisualStudio.Workload.WebBuildTools' -y ; cinst microsoft-build-tools -y
brianary
8

Skopiuj WebApplicationsfolder z

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

do

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

Lub w skrypcie kompilacji dodaj następujący wiersz przed kompilacją

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

Pamiętaj, aby uruchomić go z podwyższonymi uprawnieniami

adeel41
źródło
3

jak stworzyć aplikację VS 2017 pro, asp.net MVC i skompilować ją z Jenkins?

używaj vs 2017 Pro zarówno na maszynie deweloperskiej, jak i serwerze kompilacji

Sprawdź, czy VisualStudio jest ustawione na 15
Importuj projekt = "$ (MSBuildExtensionsPath32) \ Microsoft \ VisualStudio \ v15.0 \ WebApplications \ Microsoft.WebApplication.targets" Warunek = "fałsz"

ustaw narzędzie msbuild
na C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Professional \ MSBuild \ 15.0 \ Bin \ MSBuild.exe w globalnym menedżerze konfiguracji Jenkinsa

Za pomocą Jenkinsa wykonaj pakiet poleceń systemu Windows:
narzędzia Jenkins retore nugets: "C: \ Program Files (x86) \ Jenkins \ tools \ nuget \ NuGet.exe" przywróć "C: \ Program Files (x86) \ Jenkins \ workspace \ theapp_build \ theapp. sln "

Korzystając z jenkins, wykonaj partię poleceń systemu Windows:
plik kompilacji MSBuild: theapp.sln
Argumenty wiersza polecenia: / nologo / t: restore / t: rebuild / p: Configuration = "Debug" /p:VisualStudioVersion=15.0

Viorel Banesaru
źródło
2

W przypadku VS 2019 naprawiłem to, kopiując:

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

do

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

mariocatch
źródło
Jak zdobyć C: \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ Enterprise \ MSBuild \ Microsoft \ VisualStudio \ v15.0 dla VS2019
somegeek
-1

Po prostu używam Instalatora Visual Studio, aby zaktualizować Visual Studio Community 2017 , a następnie problem został rozwiązany.

Peter Chen
źródło