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.targets
któ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\WebApplications
punktu do starych plików 14.0 (znajdujących się pod C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications
).
Dzięki
źródło
Odpowiedzi:
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
lub otwieranie
vs_buildtools.exe
i wybieranie komponentu „Narzędzia do tworzenia aplikacji internetowych” w interfejsie GUI:źródło
Build Tools for Visual Studio 2017
zWeb development build tasks
podanym linkiem, ale nadal nie tworzyC:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications
folderu..Także nie widzę ...vs_buildtools.exe
Przeszukałem cały$(MSBuildExtensionsPath)
została zmieniona naC:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild
stackoverflow.com/questions/47077150/, żePrzyję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ł.
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.
VSB Pro nadal nie zbudowało mojego projektu. Zostałem wyrzucony ten sam błąd powyżej. Sekretem było po prostu skopiowanie
WebApplications
folderuC:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0
doC:\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.
źródło
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:
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.0
przezv$(VisualStudioVersion)
wVSToolPath
tagu projektu można było wczytać.Zastąpiłem też
v14.0
przezv10.0
wVisualStudioVersion
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".)
źródło
Za
WebBuildTools
pomocą 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:W przypadku VS 2019 jest podobnie:
źródło
cinst visualstudio2017buildtools -params '--add Microsoft.VisualStudio.Workload.WebBuildTools' -y ; cinst microsoft-build-tools -y
Skopiuj
WebApplications
folder zC:\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
źródło
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
źródło
W przypadku VS 2019 naprawiłem to, kopiując:
do
źródło
Po prostu używam Instalatora Visual Studio, aby zaktualizować Visual Studio Community 2017 , a następnie problem został rozwiązany.
źródło