ฉันก็ประสบปัญหานี้เช่นกันขณะพยายามสร้างปลั๊กอินโดยใช้ Visual Studio 2017 บนคอมพิวเตอร์ในที่ทำงานที่ยุ่งเหยิงอย่างน่ากลัว หากคุณค้นหาอินเทอร์เน็ตสำหรับ "ไม่พบ resgen.exe" คุณจะพบคำแนะนำทั้งหมดนี้เหมือนกับ ' เพียงใช้ regedit เพื่อแก้ไข Windows Registry ของคุณและสร้างคีย์ใหม่ที่นี่จากนั้นคัดลอกและวางเนื้อหาของโฟลเดอร์นี้ลงใน โฟลเดอร์อื่นนี้ blah blah blah '
ฉันใช้เวลาหลายสัปดาห์ในการสร้างความสับสนให้กับ Windows Registry ด้วย 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) the -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")
หากคุณเป็นสาขาวิชามนุษยศาสตร์เช่นตัวฉันเองที่ไม่มีพื้นฐานในคอมพิวเตอร์คุณอาจถูกล่อลวงให้แก้ไข heck ออกจาก Windows Registry ของคุณและคัดลอก ResGen.exe ไปวางทั่วทุกที่เมื่อต้องเผชิญกับข้อผิดพลาดเช่นนี้ (ซึ่งก็คือ แน่นอนการปฏิบัติที่ไม่ดี) ควรทำตามขั้นตอนที่ระบุไว้ข้างต้นจะดีกว่า: 1) เรียกใช้ MSBuild.exe โดยตรงบนไฟล์ * .csproj ของคุณเพื่อค้นหาตำแหน่งที่แน่นอน MSBuild กำลังมองหา ResGen.exe จากนั้น 2) แก้ไข Windows Registry ของคุณอย่างแม่นยำเพื่อให้ MSBuild สามารถค้นหา ResGen ได้ exe