Perché MSBuild cerca in C: \ Microsoft.Cpp.Default.props invece di c: \ Program Files (x86) \ MSBuild? (errore MSB4019)


124

Quando eseguo msbuild per creare un progetto vc2010 ottengo il seguente errore:

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 trova c: \ Program File (x86) \ MSBuild
  • HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ MSBuild \ ToolVersions \ V4.0 VCTargetsPath impostato su $ (MSBuildExtensionsPath32) \ Microsoft.Cpp \ v4.0 \
  • durante l'esecuzione di msbuild / verbosity: diag come buon sistema mostra MSBuildExtensionsPath32, MSBuildExtensionsPath64, MSBuildExtensionsPath impostato come Ambiente all'inizio della compilazione
  • l'impostazione di MSBuildExtensionsPath32, MSBuildExtensionsPath64, MSBuildExtensionsPath impostato come variabili di ambiente nella shell non fa sì che vengano visualizzate come Ambiente all'inizio della compilazione

Correzioni tentate

  • .Net 4.5 disinstallato, .net 4.0 riparato
  • Imposta MSBuildExtensionsPath32, MSBuildExtensionsPath64, MSBuildExtensionsPath nelle variabili di sistema.

Sembra che MSBuildExtensionsPath32 non sia impostato correttamente e l'impostazione di MSBuildExtensionsPath non aiuta

SET MSBuildExtensionsPath="C:\Program Files\MSBuild"

Per favore fatemi sapere se avete qualche idea su cosa sta bloccando l'impostazione corretta di questa variabile.


6
Grande! Un'altra domanda su un errore derivante da un'installazione corrotta di Visual Studio con centinaia di soluzioni alternative che funzionano solo in alcuni scenari selezionati ...
Florian Winter

Risposte:


75

Ho riscontrato questo problema durante la pubblicazione di un'applicazione cocos2d-x utilizzando il loro strumento da riga di comando, che chiama MSBuild. Sto usando Win 7 a 64 bit, VS2013 express, cocos2d-x versione 3.3, .NET Framework 4.5 installato.

Ho risolto il problema impostando quanto segue prima di eseguire il comando di pubblicazione cocos.py:

SET VCTargetsPath=C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120

Questo mi ha aiutato a installare il pacchetto del nodo oracledb. Ho seguito le istruzioni su community.oracle.com/docs/DOC-931127 e anche così ho ricevuto l'errore MSB4019, che ho corretto con questa risposta.
Pedro Otero

1
Versione PowerShell:[Environment]::SetEnvironmentVariable("VCTargetsPath", "C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140", "Machine")
fiat

Aiutato con percorso terminato con 'v4.0'
Alexander

50

Per coloro che non hanno seguito l'ordine vietato da MS (vedere la risposta di Xv ) è comunque possibile risolvere il problema.

MSBuild utilizza VCTargetsPathper individuare le proprietà cpp predefinite ma non può perché il registro non dispone di questo valore stringa.

Verifica il valore della stringa

  • Avvia regedit
  • Navigatore verso HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0
  • Ispeziona la VCTargetsPathchiave. Il valore dovrebbe = " $(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\"

Aggiustare

  • Avvia regedit Navigator su HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0
  • Aggiungi valore stringa VCTargetsPath
  • Imposta valore su " $(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\"

Nota: HKLMsta per HKEY_LOCAL_MACHINE.


12
La voce di registro era già lì per me. Ho dovuto definire una variabile di ambiente con quel nome impostato sul valore nel registro per superare quella:set VCTargetsPath=c:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0
elmotec

12
per me ha funzionato solo con questo setVCTargetsPath=c:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v120
ygaradon

1
@ cmm-user HKLM sta per HKEY_LOCAL_MACHINEche dovresti assolutamente averlo in regedit
Michael Johnston,

4
VCTargetsPath non è una chiave, ma un valore stringa!
John Smith

5
Per me era adessoset VCTargetsPath=c:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v140
Daniel Gray il

26

Ho avuto lo stesso problema di recente e dopo aver installato diversi pacchetti in un ordine diverso, stava diventando molto disordinato. Poi ho trovato questo repo - https://github.com/felixrieseberg/windows-build-tools

npm install --global windows-build-tools

Installa gli strumenti Python e VS Build necessari per compilare la maggior parte dei moduli del nodo. Ha funzionato a meraviglia!


1
Buona cosa ma purtroppo non funziona per Azure.
Aleksey Kontsevich

6
Per quelli che potrebbero avere un problema come me. Avevo bisogno --productiondell'opzione. npm install --global --production windows-build-tools Secondo le istruzioni di installazione di node-gyp: github.com/nodejs/node-gyp
eliotRosewater

15

Per Visual Studio 2017 e 2019 su Windows 10

Molte delle risposte qui si applicano alle versioni precedenti di Visual Studio. Quello che ha funzionato per me, se si utilizzava la versione Community di Visual Studio 2017, è stato impostare una variabile di ambiente chiamata VCTargetsPathe assegnarle un valore di

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets

Se si utilizza la versione Community di Visual Studio 2019,

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160

Altre risposte qui impostano questa variabile su c:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v140ma ho notato nella mia installazione di Visual Studio, non c'era nessuna cartella chiamata Microsoft.Cpp nella mia cartella MSBuild. Quindi tieni presente questo e il fatto che il percorso sopra è per la versione Community di Visual Studio 2017.

Inoltre, assicurati che il percorso di MSBuild nelle variabili di ambiente punti alla versione corretta di MSBuild se stai utilizzando la versione Community di Visual Studio 2017,

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin

Se utilizzi la versione Community di Visual Studio 2019,

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

1
Nel mio, VCTargetPath era C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ BuildTools \ Common7 \ IDE \ VC \ VCTargets
Madura Pradeep

1
Potrebbe anche essere Microsoft Visual Studio\2019\BuildToolso variazioni simili - e suppongo che invece di BuildTools e Community potresti anche avere Professional ed Enterprise. vswhere.exe -products * -property installationPathcercherà tutte le combinazioni e restituirà le posizioni di tutti i prodotti installati.
MSalters

1
'vswhere.exe' is not recognized as an internal or external command, operable program or batch file.
Andrew Koster

13

L'installazione dell'aggiornamento del compilatore Microsoft Visual C ++ 2010 Service Pack 1 per Windows SDK 7.1 ha risolto gli MSB4019errori che stavo ottenendo durante la compilazione su Windows7 x64.

Il file readme di tale aggiornamento afferma che l'ordine consigliato è

  1. Visual Studio 2010
  2. Windows SDK 7.1
  3. Visual Studio 2010 SP1
  4. Aggiornamento del compilatore Visual C ++ 2010 SP1 per Windows SDK 7.1

Oh va bene. Ho trovato la soluzione per questo. Aggiungi la chiave di registro mancante. Lo pubblicherò e aggiornerò i miei documenti di installazione per seguire questo ordine
Peter Kahn

6

Nei sistemi a 64 bit, MSBuild utilizza per impostazione predefinita le seguenti proprietà (dove C: è SystemDrive):

MSBuildExtensionsPath = C:\Program Files (x86)\MSBuild
MSBuildExtensionsPath32 = C:\Program Files (x86)\MSBuild
MSBuildExtensionsPath64 = C:\Program Files\MSBuild

In caso contrario, significa che hai installato alcune destinazioni personalizzate di sostituzione di terze parti o che l'installazione di MSBuild è danneggiata.

Cose da provare:

  • Ripara l'installazione di .NET
  • Applica l'ultimo Service Pack di Visual Studio
  • Imposta MSBuildExtensionsPathmanualmente come sopra (nota la x86parte su macchine a 64 bit)

2
Grazie ma quelli non sono ancora impostati dopo: 1) ripara .net 4.5, 2) disinstalla .net 4.5 e ripara 4.0. Se li imposto manualmente nell'ambiente non funziona neanche
Peter Kahn

5

Ho avuto questo problema nell'edizione di Visual Studio 2015. Quando ho usato cmake per generare un progetto è apparso questo errore.

errore MSB4019: Il progetto importato "D: \ Microsoft.Cpp.Default.props" non è stato trovato

L'ho risolto aggiungendo una stringa

VCTargetsPath

con valore

$ (MSBuildExtensionsPath32) \ Microsoft.Cpp \ v4.0 \ V140

nel percorso del registro

HKLM \ SOFTWARE \ Microsoft \ MSBuild \ ToolsVersions \ 14.0


Fatto questo. Riavviato il cmd dopo, ma non risolve il problema.
Dan

4

MSBuild in uno strumento di compilazione indipendente che viene spesso fornito in bundle con altri strumenti. Potrebbe essere stato installato sul tuo computer con .NET (versioni precedenti), Visual Studio (versioni più recenti) o anche Team Foundation Build.

MSBuild necessita di file di configurazione, compilatori, ecc. (Un ToolSet) che corrisponda alla versione di Visual Studio o TFS che lo utilizzerà, nonché alla versione di .NET con cui verrà compilato il codice sorgente.

A seconda di come è stato installato MSBuild, i file di configurazione potrebbero trovarsi in uno o più di questi percorsi.

  • C: \ Programmi (x86) \ MSBuild \ Microsoft.Cpp \ v4.0 \
  • C: \ Programmi (x86) \ MSBuild \ Microsoft.Cpp \ v4.0 \ V120 \
  • C: \ Programmi (x86) \ MSBuild \ Microsoft.Cpp \ v4.0 \ V140 \

Come descritto in altre risposte, un elemento del registro e / o una variabile ambientale deve puntare al percorso ToolSet.

  • La chiave VCTargetsPath in HKLM \ SOFTWARE \ Microsoft \ MSBuild \ ToolsVersions \ 4.0
  • La variabile ambientale VCTargetsPath.

Occasionalmente, un'operazione come l'installazione di uno strumento lascerà il registro e / o la variabile ambientale impostata in modo errato. Le altre risposte sono tutte variazioni su come risolverle.

L'unica cosa che devo aggiungere è che la variabile d'ambiente non ha funzionato per me quando ho interrotto il trailing \


Questo! Abbiamo avuto problemi con il nostro agente di compilazione senza l'installazione completa di VS2017. Abbiamo reinstallato il "Carico di lavoro" con un determinato set di strumenti VC, non il singolo componente, ed è stata eseguita un'installazione corretta. Sospettiamo che il programma di installazione di Visual Studio non abbia inserito il set di strumenti corretto v141 in VS2017 durante l'installazione della selezione dei componenti personalizzati.
Lars Pellarin

Per me, questo ha aiutato a risolverlo: uno script che stavo usando stava "utilmente" trovando il msbuild.exe sbagliato e chiamandolo esplicitamente.
Scovetta

4

Le voci di registro per la chiave MSBuild hanno funzionato bene per me. È importante ricordare che deve essere eseguito per rami a 64 bit o 32 bit a seconda della versione di MSBuild eseguita. Non consiglierei di utilizzare le variabili di ambiente in quanto potrebbero causare problemi in diverse versioni di MSBuild.

Questo file di registro risolve che per entrambi i casi:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\MSBuild\ToolsVersions\14.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V140\\'))"
"VCTargetsPath10"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath10)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"
"VCTargetsPath11"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath11)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"
"VCTargetsPath12"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath12)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V120\\'))"
"VCTargetsPath14"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath14)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V140\\'))"

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\MSBuild\ToolsVersions\14.0\10.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\MSBuild\ToolsVersions\14.0\11.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"
"VCTargetsPath10"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath10)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"
"VCTargetsPath11"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath11)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\MSBuild\ToolsVersions\14.0\12.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V120\\'))"
"VCTargetsPath10"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath10)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"
"VCTargetsPath11"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath11)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"
"VCTargetsPath12"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath12)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V120\\'))"

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\MSBuild\ToolsVersions\14.0\14.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V140\\'))"
"VCTargetsPath10"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath10)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"
"VCTargetsPath11"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath11)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"
"VCTargetsPath12"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath12)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V120\\'))"
"VCTargetsPath14"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath14)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V140\\'))"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V140\\'))"
"VCTargetsPath10"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath10)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"
"VCTargetsPath11"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath11)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"
"VCTargetsPath12"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath12)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V120\\'))"
"VCTargetsPath14"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath14)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V140\\'))"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0\10.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0\11.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"
"VCTargetsPath10"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath10)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"
"VCTargetsPath11"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath11)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0\12.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V120\\'))"
"VCTargetsPath10"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath10)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"
"VCTargetsPath11"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath11)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"
"VCTargetsPath12"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath12)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V120\\'))"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0\14.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V140\\'))"
"VCTargetsPath10"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath10)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"
"VCTargetsPath11"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath11)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"
"VCTargetsPath12"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath12)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V120\\'))"
"VCTargetsPath14"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath14)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V140\\'))"

3

Nient'altro ha funzionato per me tranne l'impostazione del percorso come:

C:\Program Files\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0

quale percorso devo impostare?
Nageshwar Reddy Pandem

3

EDIT: questo vale per le versioni precedenti di Visual Studio / MSBuild (in particolare MSVC2015?). Con le versioni più moderne, MSBuild è incluso in Visual Studio Build Tools 2019 e i compilatori si trovano in posizioni diverse e rilevati in modi diversi.

Ciò è dovuto a una mancata corrispondenza dei set di strumenti MSBuild installati e delle impostazioni del registro. Può accadere se hai eseguito una o più delle seguenti operazioni:

  • Installa più versioni di Visual Studio nell'ordine sbagliato
  • Disinstallare una o più versioni di Visual Studio
  • Apportare manualmente modifiche al registro o modifiche all'installazione di Visual Studio

L'unica soluzione sicura e affidabile è reinstallare il sistema operativo. Se il progetto richiede più versioni di Visual Studio per la compilazione, installa prima la versione meno recente . Quindi correggi il codice in modo da poter utilizzare un unico strumento per crearlo, altrimenti tu oi tuoi colleghi sarete di nuovo nello stesso pasticcio presto.

Se questa non è un'opzione per te, leggi prima https://stackoverflow.com/a/41786593/2279059 per una migliore comprensione del problema e di cosa fanno effettivamente le varie "soluzioni". Quindi, a seconda della versione e della configurazione di Visual Studio, una delle altre risposte o varianti potrebbe eventualmente essere d'aiuto.

Alcuni suggerimenti in più:


2

L'installazione dell'aggiornamento del compilatore Microsoft Visual C ++ 2010 Service Pack 1 per Windows SDK 7.1 ha funzionato per me. Tuttavia, ho riscontrato problemi con l'aggiornamento perché avevo già installato VS 2010 e VS 2010 SP1. Come accennato in precedenza da Xv , il file readme.htm contiene soluzioni per i problemi di installazione più comuni nella sezione "Problemi noti". Vorrei seguire le istruzioni nel readme.htm e riavviare il computer dopo ogni tentativo di risoluzione dei problemi perché alcune installazioni scrivono nel registro.


2

Nel mio caso, ho aggiunto una variabile d'ambiente VCTargetPathcon path

"C: \ Programmi (x86) \ Microsoft Visual Studio \ 2017 \ Professional \ Common7 \ IDE \ VC \ VCTargets \"

('\' alla fine è fondamentale, poiché i file della soluzione del progetto hanno un riferimento al file "Microsoft cpp target".

Inoltre, a partire da Visual Studio 2017 MSBUILD arriva all'interno di Visual Studio, quindi è PATH variablenecessario aggiornare con

C: \ Programmi (x86) \ Microsoft Visual Studio \ 2017 \ Professional \ MSBuild \ 15.0 \ Bin

L'aggiornamento VCTargetPathe le PATHvariabili di MSBUILD e la creazione hanno risolto l'errore.


0

Mi sono imbattuto in questo errore scrivendo uno script Build che avrebbe inserito MSBuild in% PATH% dopo aver scavato ricorsivamente nella cartella C: \ Windows \ Microsoft.NET per qualsiasi file MSBuild.exe trovato. L'ultima hit trovata è stata la directory inserita nel percorso. Dal momento che il dircomando avrebbe colpito la Framework64cartella dopo Frameworkaver ottenuto uno degli MSBuild a 64 bit nel mio percorso. Stavo cercando di creare una soluzione Visual Studio 2010 e ho finito per alterare la mia stringa di ricerca da C:\Windows\Microsoft.NETa in C:\Windows\Microsoft.NET\Frameworkmodo da finire con un MSBuild.exe a 32 bit. Ora il mio file di soluzione viene compilato.


0

Ho appena aggiunto VCTargetsPath={c:\...}come variabile d'ambiente al mio lavoro Hudson.


0

Per la cronaca, il file Microsoft.Cpp.Default.propspuò modificare env var VCTargetsPathe rendere errati i successivi utilizzi di tale var. Ho avuto quel problema e l'ho risolto impostando VCTargetsPath10e VCTargetsPath11sullo stesso valore di VCTargetsPath.

Questo dovrebbe essere adattato in base alla versione VS che stai utilizzando.


0

Lo vedo in un ambiente VS2017. Il mio script di compilazione chiama VsDevCmd.batprima e per risolvere questo problema ho impostato il fileVCTargetsPath variabile d'ambiente dopo VsDevCmde prima di chiamare MSBuild:

set VCTargetsPath=%VCIDEInstallDir%VCTargets

0

In aggiunta alla risposta di Chris Gong su VS2017 / 2019 sopra (non ho ancora l'autorizzazione per i commenti).

Se sono installati gli strumenti di compilazione di VS 2019 anziché il Visual Studio completo, i percorsi dei file sono leggermente diversi. VCTargetsPath dovrebbe quindi essere

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\

Nota anche la barra rovesciata di terminazione, necessaria almeno nel mio caso (TFS2017, strumenti di build VS2019). Modifica corrispondente anche alla voce PATH.


0

Stavo affrontando lo stesso problema con MSBuild per VS 17

Ho risolto questo problema applicando i seguenti passaggi:

  • Nel mio caso il Microsoft.Cpp.Default.propsfile si trovava in, C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCTargets quindi ho creato una VCTragetsPathstringa nel registro sotto HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0con valore C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCTargets

  • Ho anche fatto funzionare il mio Jenkins come utente amministratore

Questo ha risolto il mio problema.


0

Invece di impostare un percorso fisso, prova prima questo nella riga di comando post-build:

SET VCTargetsPath=$(VCTargetsPath)

La variabile '$ (VCTargetsPath)' sembra essere una macro-studio-visuale correlata a c ++ che non è mostrata in c # -sdk-projects come macro ma è ancora disponibile lì.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.