我也尝试在我的混乱工作场所计算机上使用Visual Studio 2017构建插件时遇到了此问题。如果您在互联网上搜索“无法找到resgen.exe”,则可以找到所有类似的建议,只需使用regedit编辑Windows注册表并在此处创建新密钥,然后将该文件夹的内容复制并粘贴到这另一个文件夹,等等等等。'
我花了数周的时间用regedit弄乱了Windows注册表,可能将十几个子项和复制粘贴的ResGen.exe添加到许多不同的目录中,有时将其放置在“ bin”文件夹中,有时仅将其保留在主文件夹中,等等
最后,我意识到,“嘿,如果Visual Studio提供了更详细的错误消息,那么这都不是问题。” 因此,为了获得有关该错误的更多详细信息,我直接从命令行在我的* .csproj文件上运行了MSBuild.exe :
"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 = diagnostic,它基本上只是告诉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工具”)。
如果您是像我这样的人文学科专业人士,并且没有计算机背景知识,则可能会遇到这样的错误,您可能会想直接编辑Windows注册表中的内容,然后将ResGen.exe复制粘贴到整个位置(这是当然是不好的做法)。最好遵循上面概述的过程:1)直接在* .csproj文件上运行MSBuild.exe,以查找MSBuild正在寻找ResGen.exe的确切位置,然后2)精确编辑Windows注册表,以便MSBuild可以找到ResGen。可执行程序。