Я тоже столкнулся с этой проблемой, пытаясь создать плагин с помощью 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. ехе.