Anch'io ho riscontrato questo problema durante il tentativo di creare un plug-in utilizzando Visual Studio 2017 sul mio computer sul posto di lavoro orribilmente incasinato. Se cerchi su Internet "impossibile trovare resgen.exe", puoi trovare tutti questi consigli come ' basta usare regedit per modificare il registro di Windows e creare una nuova chiave qui e copiare e incollare il contenuto di questa cartella in quest'altra cartella, blah blah blah.'
Ho trascorso settimane a rovinare il mio registro di Windows con regedit, probabilmente ho aggiunto una dozzina di sottochiavi e ResGen.exe incollato in molte directory diverse, a volte mettendolo in una cartella "bin", a volte semplicemente conservandolo nella cartella principale, eccetera.
Alla fine, mi sono reso conto, "Ehi, se Visual Studio avesse fornito un messaggio di errore più dettagliato, nulla di tutto questo sarebbe stato un problema". Quindi, per ottenere maggiori dettagli sull'errore, ho eseguito MSBuild.exe direttamente sul mio file * .csproj dalla riga di comando:
"C:/Windows/Microsoft.NET/Framework/v4.0.3.0319/MSBuild.exe C:/Users/Todd/Plugin.csproj -fl -flp:logfile="C:/Users/Todd/Desktop/error_log.log";verbosity=diagnostic"
Naturalmente, dovrai modificare i dettagli del percorso per adattarli alla tua situazione, ma assicurati di mettere 1) il percorso completo di MSBuild.exe 2) il percorso completo del tuo file * .csproj 3) il -fl -flp: logfile = parte, che dirà a MSBuild di creare un file di registro di ogni passaggio effettuato nel processo, 4) la posizione in cui si desidera salvare il file * .log e 5); verbosità = diagnostica, che sostanzialmente dice a MSBuild per includere tonnellate di dettagli nel file * .log.
Dopo aver fatto ciò, la compilazione fallirà come sempre, ma ti verrà lasciato un file * .log che mostra esattamente dove MSBuild ha cercato il tuo file ResGen.exe. Nel mio caso, vicino alla fine del file * .log, ho trovato:
Compiling plug-in resources (Task ID:41)
Looking in key SOFTWARE\WOW6432Node\Microsoft\Microsoft SDKs\NETFXSDK\4.6.2\WinSDK-NetFx40Tools-x86 (Task ID:41)
Looking in key SOFTWARE\WOW6432Node\Microsoft\Microsoft SDKs\NETFXSDK\4.6.1\WinSDK-NetFx40Tools-x86 (Task ID:41)
Looking in key SOFTWARE\WOW6432Node\Microsoft\Microsoft SDKs\NETFXSDK\4.6\WinSDK-NetFx40Tools-x86 (Task ID:41)
Looking in key SOFTWARE\WOW6432Node\Microsoft\Microsoft SDKs\Windows\v8.1a\WinSDK-NetFx40Tools-x86 (Task ID:41)
Looking in key SOFTWARE\WOW6432Node\Microsoft\Microsoft SDKs\Windows\v8.0a\WinSDK-NetFx40Tools-x86 (Task ID:41)
MSBUILD: error : Failed to locate ResGen.exe and unable to compile plug-in resource file "C:/Users/Todd/PluginResources.resx"
Quindi sostanzialmente, MSBuild ha cercato ResGen.exe in cinque directory separate , poi ha rinunciato. Questo è il tipo di dettagli che non è possibile ottenere dal messaggio di errore di Visual Studio e risolve il problema: utilizzare semplicemente regedit per creare una chiave per una di queste cinque posizioni e inserire il valore "InstallationFolder" nella chiave , che dovrebbe puntare alla cartella in cui risiede ResGen.exe (nel mio caso era "C: \ Programmi \ Microsoft SDKs \ Windows \ v10.0A \ bin \ NETFX 4.7.2 Tools").
Se sei un esperto di discipline umanistiche come me senza precedenti nei computer, potresti essere tentato di modificare il diavolo dal registro di Windows e copiare e incollare ResGen.exe ovunque di fronte a un errore come questo (che è ovviamente, cattiva pratica). È meglio seguire la procedura descritta sopra: 1) Esegui MSBuild.exe direttamente sul tuo file * .csproj per scoprire la posizione esatta in cui MSBuild sta cercando ResGen.exe, quindi 2) modifica il registro di Windows in modo che MSBuild possa trovare ResGen. EXE.