Я тоже столкнулся с этой проблемой, когда пытался создать плагин с помощью Visual Studio 2017 на моем ужасно испорченном рабочем компьютере. Если вы выполните поиск в Интернете по запросу «не удается найти resgen.exe», вы можете найти все эти советы вроде « просто используйте regedit для редактирования реестра Windows, создайте здесь новый ключ и скопируйте и вставьте содержимое этой папки в эта другая папка, бла-бла-бла. '
Я потратил несколько недель, просто испортил свой реестр Windows с помощью regedit, вероятно, добавил дюжину подключей и скопировал ResGen.exe во множество разных каталогов, иногда помещая его в папку `` bin '', иногда просто сохраняя его в основной папке, и т.п.
В конце концов я понял: «Эй, если бы Visual Studio выдала более подробное сообщение об ошибке, ничего из этого не было бы проблемой». Итак, чтобы получить более подробную информацию об ошибке, я запустил MSBuild.exe непосредственно в моем файле * .csproj из командной строки:
"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"
Конечно, вам придется изменить детали пути в соответствии с вашей ситуацией, но обязательно укажите 1) полный путь к MSBuild.exe 2) полный путь к вашему файлу * .csproj 3) -fl -flp: logfile = part, который сообщит MSBuild о необходимости создания файла журнала для каждого шага, предпринятого в процессе, 4) местоположение, в котором вы хотите сохранить файл * .log и 5); verbosity = диагностический, который в основном просто сообщает MSBuild для включения ТОННЫ подробностей в файл * .log.
После этого сборка, как всегда, завершится ошибкой, но у вас останется файл * .log, показывающий , где именно MSBuild искал ваш файл ResGen.exe. В моем случае в нижней части файла * .log я обнаружил:
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"
Таким образом, MSBuild искал ResGen.exe в пяти отдельных каталогах , а затем отказался. Это та деталь, которую вы просто не можете получить из сообщения об ошибке Visual Studio, и она решает проблему: просто используйте regedit, чтобы создать ключ для любого из этих пяти расположений , и поместите значение «InstallationFolder» в ключ , который должен указывать на папку, в которой находится ваш ResGen.exe (в моем случае это была «C: \ Program Files \ Microsoft SDKs \ Windows \ v10.0A \ bin \ NETFX 4.7.2 Tools»).
Если вы специализируетесь на гуманитарных науках, как и я, без опыта работы в компьютерах, у вас может возникнуть соблазн просто отредактировать черт возьми из своего реестра Windows и скопировать-вставить ResGen.exe повсюду, когда столкнетесь с такой ошибкой (которая конечно, плохая практика). Лучше следовать процедуре, описанной выше: 1) Запустите MSBuild.exe непосредственно в вашем файле * .csproj, чтобы узнать точное местоположение MSBuild, которое ищет ResGen.exe, затем 2) отредактируйте реестр Windows так, чтобы MSBuild мог найти ResGen. Exe.