Nie znaleziono „C: \ Microsoft.Cpp.Default.props”

83

Mam projekt utworzony w Visual Studio 2013.

Plik projektu ma następujące właściwości:

ToolsVersion = "12.0", PlatformToolset = v120.

Mam zainstalowany program Visual Studio 2013 i Microsoft Build Tools 2015. Ten projekt został pomyślnie skompilowany przy użyciu programu MSBuild 12.0. Przy próbie zbudowania go z MSBuild 14.0 pojawia się błąd

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. 

Jak rozumiem, problem polega na tym, że zmienna VCTargetsPath nie jest oceniana. Jeśli przed kompilacją określę zmienną VCTargetsPath (z wartością C: \ Program Files (x86) \ MSBuild \ Microsoft.Cpp \ v4.0 \ V120), problem zostanie rozwiązany.

Jednak takie podejście nie jest zbyt wygodne w przypadku innej ścieżki. Czy można jakoś rozwiązać problem w bardziej optymalny sposób?

Klucz rejestru i jego wartość:

HKLM\Software\WOW6432Node\Microsoft\MSBuild\ToolsVersions\12.0\VCTargetsPath $([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\V120\'))
Serg
źródło
Przy próbie zbudowania go za pomocą MSBuild 14.0, jak dokładnie to robisz? Najpierw prawdopodobnie powinieneś zadzwonić do vcvars.bat (lub odpowiednika w przypadku narzędzi do budowania 2015) ..
stijn
Zgadzam się ze stijn, ustaw ścieżkę i zmienne środowiskowe dla kompilacji wiersza poleceń za pośrednictwem vcvars.bat i sprawdź, czy to działa. Aby uzyskać więcej informacji na temat ustawiania zmiennych ścieżki i środowiska dla kompilacji wiersza polecenia, zobacz: msdn.microsoft.com/en-us/library/f2ccy3wt.aspx
Zhanglong Wu - MSFT

Odpowiedzi:

60

Naprawienie tego problemu zajęło mi dwie godziny, ale w końcu skończyłem.

Następujące rozwiązania rozwiązały mój problem:

  1. Uruchomić to na podwyższonym polecenia prompt (admin): npm install --global --production windows-build-tools. Jeśli nie masz npm, polecam go zainstalować, w przeciwnym razie to nie zadziała.
  2. Zmień własność w katalogu instalacyjnym (w moim przypadku C:\Program Files (x86)\MSBuild\14.0) na swojego użytkownika zamiast administratora. (właściwości> Bezpieczeństwo> Zaawansowane).
Nic Szerman
źródło
9
Dziękuję Ci. Po prostu musiałem (ponownie) biec npm install -g --production windows-build-tools.
Dan Atkinson,
@Nic Szer, czy możesz mi wyjaśnić drugi krok? Nie jestem w stanie tego zrozumieć.
HarshitMadhav
@NicSzer w moim przypadku widzę Właściciel: SYSTEM, co mam zrobić?
HarshitMadhav
@HarshitAgrawal trzeba zmienić właściciela folderu takie, że użytkownik jest właścicielem, nie SYSTEM
Nic Szerman
@NicSzer dzięki za odpowiedź. Zrobiłem to, ale teraz pojawiają się nowe błędy. To mój pierwszy raz, kiedy próbuję uruchomić natywny projekt React w systemie Windows. Potrzebuję pomocy. Czy możemy połączyć się na czacie w Stackoverflow?
HarshitMadhav
32

Niedawno ponownie zainstalowałem program Visual Studio 2017 i napotkałem ten problem podczas próby zainstalowania programu „npm java”. Rozwiązanie dla mnie to:

  1. ustaw wersję ms na 2017: npm config set msvs_version 2017
  2. ustaw zmienną środowiskową VCTargetsPath na C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCTargets
  3. uruchom konsolę poleceń jako administrator systemu
Alex
źródło
3
npm config set msvs_version 2017ten kod zaoszczędził mi godziny. Dzięki.
canmustu
@Alex czy twój VCTargetskatalog już zawierał Microsoft.Cpp.Default.Props? Mam katalog, ale brakuje tego pliku.
starscream_disco_party
@starscream_disco_party tak, Microsoft.Cpp.Default.Props jest już w moim folderze VCTargets
Alex
23

Te kroki rozwiązały mój problem:

  1. Biegać npm install --global --production windows-build-tools
  2. Biegać npm install --save nan
  3. Ustaw VCTargetsPathzmienną środowiskową naC:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140
Emre Tapcı
źródło
2
gdzie znajduje się VCTargetsPath?
HarshitMadhav
Idealne rozwiązanie
Hammad ul Hasan
1
@HarshitAgrawal VCTargetsPathto nazwa zmiennej środowiskowej.
Emre Tapcı
Trzeci krok potrzebny tylko w moim przypadku.
Siergiej
10

Dla tych, powyższa odpowiedź nie działa, oto inne możliwe rozwiązanie.

Nawet instalacja narzędzi do kompilacji lub VS 2015 nie działała dla mnie. Więc próbowałem zainstalować poniżej bezpośrednio przez PowerShell (jako administrator)

https://chocolatey.org/packages/visualcpp-build-tools/14.0.25420.1 Polecenie: choco install visualcpp-build-tools --version 14.0.25420.1

Po zainstalowaniu ustaw zmienną środowiskową VCTargetsPath = C: \ Program Files (x86) \ MSBuild \ Microsoft.Cpp \ v4.0 \ v140

Sorabh Mendiratta
źródło
Użycie Chocolatey rozwiązało to za mnie, nawet nie ustawiłem zmiennej środowiskowej, zadziałało po wyjęciu z pudełka
Meir Gabay
9

Dla osób korzystających z VS 2019:

ustaw VCTargetsPath = "C: \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ Professional \ MSBuild \ Microsoft \ VC \ v160"

Edycja (wrzesień 2020 r.): Czasami wymaga końcowego ukośnika odwrotnego (jak wspomniano poniżej bmiller)

TheRennen
źródło
1
To zadziałało dla mnie. Zauważ, że wymagałem również końcowego ukośnika odwrotnego na ścieżce, w przeciwnym razie kompilacja nie powiodła się, szukając określonych właściwości platformy w podfolderze.
bmiller
1
U mnie też zadziałało, chociaż musisz się upewnić, że podałeś odpowiednią wersję VS (w moim przypadku była to Community - "C: \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ Community \ MSBuild \ Microsoft \ VC \ v160 "
g0rski
5

Rozwiązałem to przez:

  1. Ustaw VCTargetsPathzmienną środowiskową naC:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140
  2. budować za pomocą administratora
PytLab
źródło
1

Nie mogłem sprawić, by działało ze wszystkimi sugestiami na tej stronie

Obniżyłem nodejs do 10,15 i działało dobrze

prawdopodobnie nie najlepsza odpowiedź, ale działa

phil123456
źródło
0

Próbowałem zainstalować npm i VCTargetsPath, wszystkie nie działają. Ostatecznie rozwiązany po aktualizacji Visual Studio do najnowszej wersji.

PaaSFly
źródło
0

Rozwiązanie rozwiązane przez zainstalowanie programu Visual Studio Express 2015 dla systemu Windows 10 .

Patapoom
źródło
Przejście z Express na Pro spowodowało problem w moim przypadku. Ustaw zmienną środowiskową VCTargetsPath na C: \ Program Files (x86) \ MSBuild \ Microsoft.Cpp \ v4.0 \ V140
Sergei
0

Rozwiązałem problem, ładując rozwiązanie w VS 2019 zamiast dwukrotnego klikania nazwy rozwiązania w Eksploratorze plików.

gerritvn
źródło
0

Podczas uruchamiania MSBuild poza Visual Studio 2019 (migracja z 2012) miałem tego rodzaju problemy. Rozwiązałem je, uruchamiając ten MSBuild:

"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\msbuild"

(dostosuj go w oparciu o wersję VS i architekturę docelową) zamiast tego:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild

którego używałem, gdy miałem Visual Studio 2012.

niebieskawy
źródło
-1

Upewnij się, że używasz --global z poleceniem, aby móc używać tego pakietu w dowolnym miejscu. To rozwiązuje problem dla mnie

Kareem Khaleel
źródło