Kiedy uruchamiam MSBuild, aby zbudować projekt vc2010, pojawia się następujący błąd:
error MSB4019: The imported project "C:\Microsoft.Cpp.Default.props" was not found.
Confirm that the path in the <Import> declaration is correct, and that the file exists
on disk.
- msbuild znajduje c: \ Program File (x86) \ MSBuild
- HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ MSBuild \ ToolVersions \ V4.0 VCTargetsPath ustawione na $ (MSBuildExtensionsPath32) \ Microsoft.Cpp \ v4.0 \
- podczas uruchamiania msbuild / verbosity: diag jako dobry system pokazuje MSBuildExtensionsPath32, MSBuildExtensionsPath64, MSBuildExtensionsPath ustawione jako środowisko na początku kompilacji
- ustawienie MSBuildExtensionsPath32, MSBuildExtensionsPath64, MSBuildExtensionsPath ustawione jako zmienne środowiskowe w powłoce nie powoduje, że są one wyświetlane jako środowisko na początku kompilacji
Podjęte próby
- Odinstalowany .net 4.5, naprawiony .net 4.0
- Ustaw MSBuildExtensionsPath32, MSBuildExtensionsPath64, MSBuildExtensionsPath w zmiennych systemowych.
Wygląda na to, że MSBuildExtensionsPath32 nie jest ustawiany poprawnie, a ustawienie MSBuildExtensionsPath nie pomaga
SET MSBuildExtensionsPath="C:\Program Files\MSBuild"
Daj mi znać, jeśli masz jakieś pomysły, co blokuje prawidłowe ustawienie tej zmiennej.
Odpowiedzi:
Mam ten problem podczas publikowania aplikacji cocos2d-x przy użyciu ich narzędzia wiersza poleceń, które wywołuje MSBuild. Używam 64-bitowego systemu Win 7, VS2013 express, cocos2d-x w wersji 3.3, zainstalowanego .NET Framework 4.5.
Rozwiązałem problem, ustawiając następujące elementy przed uruchomieniem polecenia publikowania cocos.py:
źródło
[Environment]::SetEnvironmentVariable("VCTargetsPath", "C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140", "Machine")
Dla tych, którzy nie zastosowali się do zakazanego nakazu MS (patrz odpowiedź Xv ), nadal możesz rozwiązać problem.
Program MSBuild używa
VCTargetsPath
do zlokalizowania domyślnych właściwości CPP, ale nie może, ponieważ w rejestrze brakuje tej wartości ciągu.Sprawdź wartość ciągu
HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0
VCTargetsPath
klucz. Wartość powinna = „$(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\
”Naprawić
HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0
VCTargetsPath
$(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\
”Uwaga:
HKLM
oznaczaHKEY_LOCAL_MACHINE
.źródło
set VCTargetsPath=c:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0
VCTargetsPath=c:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v120
HKEY_LOCAL_MACHINE
że zdecydowanie powinieneś go mieć w regeditset VCTargetsPath=c:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v140
Niedawno miałem ten sam problem i po zainstalowaniu różnych pakietów w różnej kolejności robił się po prostu bałagan. Następnie znalazłem to repozytorium - https://github.com/felixrieseberg/windows-build-tools
npm install --global windows-build-tools
Instaluje narzędzia Python i VS Build, które są wymagane do kompilowania większości modułów węzłów. Udało się!
źródło
--production
opcji.npm install --global --production windows-build-tools
Zgodnie z instrukcją instalacji node- gypW przypadku programu Visual Studio 2017 i 2019 w systemie Windows 10
Wiele odpowiedzi tutaj dotyczy starszych wersji programu Visual Studio. W przypadku korzystania z wersji Community programu Visual Studio 2017 zadziałało ustawienie zmiennej środowiskowej o nazwie
VCTargetsPath
i nadanie jej wartościW przypadku korzystania z wersji Community programu Visual Studio 2019,
Inne odpowiedzi tutaj ustawiają tę zmienną na
c:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v140
ale zauważyłem, że w mojej instalacji programu Visual Studio nie było folderu o nazwie Microsoft.Cpp w moim folderze MSBuild. Należy więc o tym pamiętać, a także o tym, że powyższa ścieżka dotyczy wersji Community programu Visual Studio 2017.Ponadto upewnij się, że ścieżka programu MSBuild w zmiennych środowiskowych wskazuje poprawną wersję programu MSBuild, jeśli używasz wersji społeczności programu Visual Studio 2017,
Jeśli używasz wersji Community programu Visual Studio 2019,
źródło
Microsoft Visual Studio\2019\BuildTools
lub podobne odmiany - i przypuszczam, że zamiast BuildTools i Community możesz mieć również Professional i Enterprise.vswhere.exe -products * -property installationPath
wyszuka wszystkie kombinacje i zwróci lokalizacje wszystkich zainstalowanych produktów.'vswhere.exe' is not recognized as an internal or external command, operable program or batch file.
Zainstalowanie aktualizacji kompilatora Microsoft Visual C ++ 2010 z dodatkiem Service Pack 1 dla zestawu Windows SDK 7.1 naprawiło
MSB4019
błędy, które tworzyłem w systemie Windows7 x64.Plik Readme tej aktualizacji stwierdza, że zalecaną kolejnością jest
źródło
W systemach 64-bitowych program MSBuild domyślnie przyjmuje następujące właściwości (gdzie C: to dysk systemowy):
Jeśli tak się nie stanie, oznacza to, że masz zainstalowane niestandardowe obiekty docelowe innych firm lub instalacja programu MSBuild jest uszkodzona.
Rzeczy do wypróbowania:
MSBuildExtensionsPath
ręcznie jak powyżej (zwróć uwagę nax86
część na komputerach 64-bitowych)źródło
Miałem ten problem w wersji Visual Studio 2015. Kiedy użyłem cmake do wygenerowania projektu, pojawił się ten błąd.
błąd MSB4019: Nie znaleziono zaimportowanego projektu „D: \ Microsoft.Cpp.Default.props”
Naprawiłem to, dodając String
z wartością
w ścieżce rejestru
źródło
MSBuild w niezależnym narzędziu do kompilacji, które jest często dołączane do innych narzędzi. Być może został zainstalowany na Twoim komputerze z .NET (starsze wersje), Visual Studio (nowsze wersje) lub nawet Team Foundation Build.
Program MSBuild wymaga plików konfiguracyjnych, kompilatorów itp. (Zestawu narzędzi), które są zgodne z wersją programu Visual Studio lub TFS, która będzie go używać, a także wersję platformy .NET, dla której zostanie skompilowany kod źródłowy.
W zależności od sposobu zainstalowania programu MSBuild pliki konfiguracyjne mogą znajdować się w jednej lub kilku z tych ścieżek.
Jak opisano w innych odpowiedziach, element rejestru i / lub zmienna środowiskowa muszą wskazywać ścieżkę zestawu narzędzi.
Czasami operacja, taka jak instalacja narzędzia, powoduje nieprawidłowe ustawienie rejestru i / lub zmiennej środowiskowej. Pozostałe odpowiedzi to różne warianty ich naprawy.
Jedyne, co muszę dodać, to to, że zmienna środowiskowa nie działała dla mnie, gdy zostawiłem końcowe \
źródło
Wpisy rejestru dotyczące klucza MSBuild działały dobrze. Należy pamiętać, że należy to zrobić dla gałęzi 64-bitowych lub 32-bitowych, w zależności od używanej wersji programu MSBuild. Nie polecam używania zmiennych środowiskowych, ponieważ może to powodować problemy w różnych wersjach programu MSBuild.
Ten plik rejestru rozwiązuje ten problem w obu przypadkach:
źródło
Nic innego nie działało dla mnie poza wytyczeniem ścieżki jako:
źródło
EDYCJA: dotyczy to starszych wersji programu Visual Studio / MSBuild (w szczególności MSVC2015?). W nowszych wersjach program MSBuild jest zawarty w Visual Studio Build Tools 2019, a kompilatory znajdują się w różnych miejscach i są wykrywane na różne sposoby.
Jest to spowodowane niezgodnością zainstalowanych zestawów narzędzi MSBuild i ustawień rejestru. Może się tak zdarzyć, jeśli wykonałeś jedną lub więcej z poniższych czynności:
Jedynym bezpiecznym i niezawodnym rozwiązaniem jest ponowna instalacja systemu operacyjnego. Jeśli Twój projekt wymaga wielu wersji programu Visual Studio do skompilowania, najpierw zainstaluj najstarszą wersję . Następnie napraw kod, aby móc go zbudować za pomocą jednego narzędzia. W przeciwnym razie ty lub twoi współpracownicy wkrótce znów będziecie w takim samym bałaganie.
Jeśli nie masz takiej możliwości, przeczytaj najpierw https://stackoverflow.com/a/41786593/2279059, aby lepiej zrozumieć problem i co faktycznie robią różne „rozwiązania”. Następnie, w zależności od wersji i konfiguracji programu Visual Studio, jedna z pozostałych odpowiedzi lub ich odmian może ostatecznie pomóc.
Kilka dodatkowych wskazówek:
źródło
Zainstalowanie aktualizacji kompilatora Microsoft Visual C ++ 2010 z dodatkiem Service Pack 1 dla Windows SDK 7.1 działało dla mnie. Jednak napotkałem problemy z aktualizacją, ponieważ miałem już zainstalowane VS 2010 i VS 2010 SP1. Jak wspomniano powyżej w Xv , plik readme.htm zawiera rozwiązania najczęstszych problemów z instalacją w sekcji „Znane problemy”. Postępowałbym zgodnie z instrukcjami zawartymi w pliku readme.htm i ponownie uruchamiam komputer po każdej próbie rozwiązania problemu, ponieważ niektóre instalacje zapisują w rejestrze.
źródło
W moim przypadku dodałem zmienną środowiskową
VCTargetPath
ze ścieżką('\' na końcu ma kluczowe znaczenie, ponieważ pliki rozwiązania projektu mają odniesienie do pliku „Microsoft cpp target”).
Ponadto, począwszy od programu Visual Studio 2017, MSBUILD pojawia się w programie Visual Studio - dlatego
PATH variable
należy zaktualizować programAktualizacja
VCTargetPath
iPATH
zmienne MSBUILD oraz kompilacja naprawiły błąd.źródło
Natknąłem się na ten błąd, pisząc skrypt kompilacji, który umieściłby MSBuild na% PATH% po rekurencyjnym przeszukaniu folderu C: \ Windows \ Microsoft.NET w poszukiwaniu znalezionych plików MSBuild.exe. Ostatnim znalezionym trafieniem był katalog, który został umieszczony na ścieżce. Ponieważ
dir
polecenie trafiłoby doFramework64
folderu poFramework
otrzymaniu jednego z 64-bitowych MSBuilds umieszczonych na mojej ścieżce. Próbowałem zbudować rozwiązanie Visual Studio 2010 i skończyłem zmieniając mój ciąg wyszukiwania zC:\Windows\Microsoft.NET
na,C:\Windows\Microsoft.NET\Framework
tak aby skończyć z 32-bitowym MSBuild.exe. Teraz mój plik rozwiązania jest kompilowany.źródło
Właśnie dodałem
VCTargetsPath={c:\...}
jako zmienną środowiskową do mojej pracy w Hudson.źródło
Dla przypomnienia, plik
Microsoft.Cpp.Default.props
może zmodyfikować zmienną envVCTargetsPath
i sprawić, że późniejsze użycie tej zmiennej będzie nieprawidłowe. Miałem ten problem i rozwiązać go przez ustawienieVCTargetsPath10
iVCTargetsPath11
na taką samą wartość, niżVCTargetsPath
.Należy to dostosować do używanej wersji VS.
źródło
Widzę to w środowisku VS2017. Mój skrypt kompilacji wywołuje
VsDevCmd.bat
najpierw i aby rozwiązać ten problem, ustawiamVCTargetsPath
zmienną środowiskową poVsDevCmd
i przed wywołaniem programu MSBuild:źródło
Dodając do odpowiedzi Chrisa Gonga na temat VS2017 / 2019 powyżej (nie mam jeszcze uprawnień do komentowania).
Jeśli zamiast pełnego programu Visual Studio są zainstalowane narzędzia do kompilacji VS 2019, ścieżki plików są nieco inne. VCTargetsPath powinno być
Zwróć także uwagę na kończący ukośnik odwrotny - wymagany przynajmniej w moim przypadku (narzędzia TFS2017, VS2019 Build). Odpowiednia zmiana we wpisie PATH.
źródło
Miałem ten sam problem z MSBuild dla VS 17
Rozwiązałem to, wykonując następujące kroki:
W moim przypadku
Microsoft.Cpp.Default.props
plik znajdował się pod adresem,C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCTargets
więc utworzyłemVCTragetsPath
w rejestrze ciąg znakówHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0
o wartościC:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCTargets
Uruchomiłem też Jenkinsa jako administrator
To rozwiązało mój problem.
źródło
Zamiast ustawiać stałą ścieżkę, spróbuj najpierw w wierszu poleceń po kompilacji:
Zmienna „$ (VCTargetsPath)” wydaje się być powiązanym z C ++ makrem Visual Studio, które nie jest wyświetlane w c # -sdk-projects jako makro, ale jest tam nadal dostępne.
źródło