Auch ich bin auf dieses Problem gestoßen, als ich versucht habe, mit Visual Studio 2017 ein Plugin auf meinem schrecklich durcheinandergebrachten Arbeitsplatzcomputer zu erstellen. Wenn Sie im Internet nach "resgen.exe kann nicht gefunden werden" suchen, finden Sie all diese Ratschläge, die wie " Verwenden Sie einfach regedit, um Ihre Windows-Registrierung zu bearbeiten und hier einen neuen Schlüssel zu erstellen und den Inhalt dieses Ordners zu kopieren und einzufügen." dieser andere Ordner, bla bla bla.'
Ich habe Wochen damit verbracht, meine Windows-Registrierung mit regedit durcheinander zu bringen, wahrscheinlich ein Dutzend Unterschlüssel hinzugefügt und ResGen.exe in viele verschiedene Verzeichnisse kopiert, manchmal in einem 'bin'-Ordner abgelegt, manchmal nur im Hauptordner. etc.
Am Ende wurde mir klar: "Hey, wenn Visual Studio eine detailliertere Fehlermeldung geben würde, wäre nichts davon ein Problem." Um weitere Details zu dem Fehler zu erhalten, habe ich MSBuild.exe direkt in meiner * .csproj-Datei über die Befehlszeile ausgeführt:
"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"
Natürlich müssen Sie die Pfaddetails an Ihre Situation anpassen, aber stellen Sie sicher, dass Sie 1) den vollständigen Pfad zu MSBuild.exe 2) den vollständigen Pfad zu Ihrer * .csproj-Datei 3) das -fl -flp: logfile = part, der MSBuild anweist, eine Protokolldatei für jeden Schritt zu erstellen, den es in diesem Prozess ausgeführt hat, 4) den Speicherort, an dem die * .log-Datei gespeichert werden soll, und 5) verbosity = diagnost, der MSBuild im Grunde nur mitteilt um Tonnen von Details in die * .log-Datei aufzunehmen.
Danach schlägt der Build wie immer fehl, es bleibt jedoch eine * .log-Datei übrig, die genau anzeigt, wo MSBuild nach Ihrer ResGen.exe-Datei gesucht hat. In meinem Fall habe ich am Ende der * .log-Datei Folgendes gefunden:
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"
Im Grunde genommen suchte MSBuild in fünf separaten Verzeichnissen nach ResGen.exe und gab dann auf. Dies ist die Art von Detail, die Sie aus der Visual Studio-Fehlermeldung einfach nicht erhalten können, und sie löst das Problem: Verwenden Sie einfach regedit, um einen Schlüssel für einen dieser fünf Speicherorte zu erstellen , und geben Sie den Wert "InstallationFolder" in den Schlüssel ein Dies sollte auf den Ordner verweisen, in dem sich Ihre ResGen.exe befindet (in meinem Fall "C: \ Programme \ Microsoft SDKs \ Windows \ v10.0A \ bin \ NETFX 4.7.2 Tools").
Wenn Sie ein Geisteswissenschaftler wie ich sind und keinen Hintergrund in Computern haben, könnten Sie versucht sein, einfach die Hölle aus Ihrer Windows-Registrierung heraus zu bearbeiten und ResGen.exe überall zu kopieren und einzufügen, wenn ein Fehler wie dieser auftritt natürlich schlechte Praxis). Befolgen Sie die oben beschriebenen Schritte: 1) Führen Sie MSBuild.exe direkt in Ihrer * .csproj-Datei aus, um den genauen Speicherort von MSBuild für ResGen.exe zu ermitteln. 2) Bearbeiten Sie Ihre Windows-Registrierung genau, damit MSBuild ResGen finden kann. exe.