Ja też napotkałem ten problem, próbując zbudować wtyczkę przy użyciu programu Visual Studio 2017 na moim okropnie popsutym komputerze w miejscu pracy. Jeśli wyszukujesz w Internecie hasło „nie można znaleźć pliku resgen.exe”, możesz znaleźć wszystkie porady w stylu „ po prostu użyj regedit do edycji rejestru systemu Windows i utwórz nowy klucz tutaj i skopiuj i wklej zawartość tego folderu do ten inny folder, bla bla bla.'
Spędziłem tygodnie po prostu psując mój Rejestr Windows za pomocą regedit, prawdopodobnie dodałem tuzin podkluczy i skopiowałem ResGen.exe do wielu różnych katalogów, czasami umieszczając go w folderze `` bin '', czasami po prostu trzymając go w folderze głównym, itp.
W końcu zdałem sobie sprawę: „Hej, gdyby Visual Studio podał bardziej szczegółowy komunikat o błędzie, nic z tego nie byłoby problemem”. Aby więc uzyskać więcej informacji na temat błędu, uruchomiłem MSBuild.exe bezpośrednio w moim pliku * .csproj z wiersza poleceń:
"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"
Oczywiście będziesz musiał zmienić szczegóły ścieżki, aby pasowały do twojej sytuacji, ale pamiętaj, aby umieścić 1) pełną ścieżkę do MSBuild.exe 2) pełną ścieżkę do pliku * .csproj 3) -fl -flp: logfile = part, który powie MSBuild, aby utworzył plik dziennika z każdym krokiem wykonanym w procesie, 4) lokalizację, w której chcesz zapisać plik * .log i 5); verbosity = diagnostyka, która w zasadzie po prostu informuje MSBuild aby dołączyć TONY szczegółów do pliku * .log.
Po wykonaniu tej czynności kompilacja zakończy się niepowodzeniem, jak zawsze, ale pozostanie plik * .log pokazujący dokładnie, gdzie program MSBuild szukał pliku ResGen.exe. W moim przypadku w dolnej części pliku * .log znalazłem:
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"
Zasadniczo MSBuild przeszukał pięć oddzielnych katalogów pod kątem ResGen.exe, a następnie zrezygnował. Jest to rodzaj szczegółów, których po prostu nie można uzyskać z komunikatu o błędzie programu Visual Studio i rozwiązuje problem: po prostu użyj regedit, aby utworzyć klucz dla dowolnej z tych pięciu lokalizacji i umieść w nim wartość „InstallationFolder” , który powinien wskazywać na folder, w którym znajduje się plik ResGen.exe (w moim przypadku był to „C: \ Program Files \ Microsoft SDKs \ Windows \ v10.0A \ bin \ NETFX 4.7.2 Tools”).
Jeśli jesteś magistrem humanistyki, takim jak ja i nie masz doświadczenia w komputerach, możesz ulec pokusie, aby po prostu wyedytować do cholery swój rejestr systemu Windows i skopiować i wkleić plik ResGen.exe w każdym miejscu, gdy napotkasz taki błąd (którym jest oczywiście zła praktyka). Lepiej postępować zgodnie z procedurą opisaną powyżej: 1) Uruchom MSBuild.exe bezpośrednio w pliku * .csproj, aby znaleźć dokładną lokalizację, w której MSBuild szuka ResGen.exe, a następnie 2) edytuj dokładnie rejestr systemu Windows, aby program MSBuild mógł znaleźć ResGen. exe.