MSBuild无法找到resgen.exe

4

我有一台虚拟机器,我在上面复制了SDK文件和路径,然后去注册表中添加了键,但是我一直收到“resgen.exe 找不到”的错误提示:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1835,9): 
error MSB3091: Task failed because "resgen.exe" was not found, or the correct 
Microsoft Windows SDK is not installed. The task is looking for "resgen.exe" 
in the"bin" subdirectory beneath the location specified in the Installation Folder 
value of the registry key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\
Windows\v7.0A. You may be able to solve the problem by doing one of the following:  
1) Install the Microsoft Windows SDK.  
2) Install Visual Studio 2010.  
3) Manually set the above registry key to the correct location.  
4) Pass the correct location into the "ToolPath" parameter of the task.

我查看了文件夹Microsoft\Microsoft SDKs\Windows\v7.0A,并将resgen.exe复制到几乎每个net文件夹中,包括bin文件夹,但它仍然告诉我找不到resgen.exe。我不知道该怎么办。


你说的“复制SDK文件”是什么意思?你可以使用安装程序来完成这个过程。Win SDK - KMoraz
我无法在虚拟机上安装该SDK,因为它一直失败。所以我从我的开发机器上复制了我正在使用的SDK,并在注册表中输入了密钥。 - AC25
1
手动执行安装程序任务从来不是一个好主意,除非你绝对确定自己知道在做什么。 - KMoraz
我明白,但是每次运行这些安装程序都会失败,而且重新构建 Excel 加载项是我唯一需要的事情? - AC25
3个回答

3

我向项目中添加了SdkToolPath参数,这有所帮助。当然,这不是完整的解决方案,因为它在构建服务器上无法工作,但现在它可以工作了,我只是不从我的机器上检查它,这意味着我可以做我需要做的事情:

<GenerateResource SdkToolsPath="C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools" Sources="@(TextResource)" OutputResources="@(TextResource->'$(OutDir)CommandStrings.resources')" />

谢谢!你救了我的一天。误导性的错误信息声称“将正确的位置传递到任务的“ToolPath”参数中”,但是GenerateResource任务无法识别ToolPath,而SdkToolsPath可以。微软真丢人! - svonidze

2
确保您的环境变量路径包括ResGen.exe所在的文件夹。

如果你在谈论路径HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A InstallationFoldr,为了确保resgen.exe在bin文件夹中,最初它被标记为“ResGen.exe”,我将其重命名为“resgen.exe”,但仍然出现相同的消息。 - AC25
请注意:resgen.exe可执行文件位于bin文件夹中。否则,请问如何获取环境变量? - AC25

2

运行Regedit编辑您的注册表。查找键HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows。如果还没有名为“CurrentVersion”的设置,请创建一个新的REG_SZ类型的注册表设置“CurrentVersion”。确保它具有与HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A中的ProductionVersion设置相同的值。

确保您的注册表中存在以下键:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDK-NetFX40Tools、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDK-NetFX40Tools-x86和HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDK-NetFX40Tools-x64,并在每个键中设置InstallationFolder值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接