Я теж зіткнувся з цією проблемою, намагаючись створити плагін за допомогою Visual Studio 2017 на моєму жахливо заплутаному комп’ютері на робочому місці. Якщо ви шукаєте в Інтернеті "не в змозі знайти resgen.exe", ви можете знайти всі ці поради, такі як " просто скористайтеся regedit, щоб відредагувати свій реєстр Windows і зробити тут новий ключ і скопіювати та вставити вміст цієї папки в ця інша папка, бла-бла-бла. '
Я витратив тижні, просто псуючи свій реєстр Windows з regedit, ймовірно, додав десяток під-ключів і скопіював ResGen.exe в безліч різних каталогів, іноді поміщаючи їх у папку «бін», іноді просто зберігаючи її в головній папці, тощо.
Врешті-решт я зрозумів: "Ей, якби 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 = частина, яка скаже MSBuild створити файл журналу кожного кроку, який він пройшов у процесі; 4) місце, де ви хочете зберегти файл * .log, і 5); verbosity = діагностика, яка в основному просто повідомляє MSBuild включити TONS деталей у файл * .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 Інструменти").
Якщо ви такий гуманітарний гуманітарний діяч, як я, що не має досвіду роботи на комп’ютерах, можливо, вам сподобається просто відредагувати його з реєстру Windows та скопіювати вставити ResGen.exe в усьому місці, зіткнувшись із такою помилкою (яка є звичайно, погана практика). Краще дотримуватися описаної вище процедури: 1) Запустіть MSBuild.exe безпосередньо у вашому файлі * .csproj, щоб з’ясувати точне місце, де MSBuild шукає ResGen.exe, а потім 2) відредагуйте реєстр Windows саме так, щоб MSBuild міг знайти ResGen. exe