我无法在 VS2010 中为 Windows 服务项目构建安装项目。它因以下错误而失败:
Could not find required file 'setup.bin' in 'C:\MyProject\Engine'.
我的环境是Windows 7 Professional x64和Visual Studio 2010版本10.0.40219.1 SP1Rel
我已经下载了Microsoft Windows SDK for Windows 7 and .NET Framework 4 ,修复,然后重新启动,然后安装除Visual C++编译器之外的未选中的组件,然后安装KB2519277 .
这些是现有的注册表项:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\GenericBootstrapper\3.5
Path = c:\Program Files (x86)\Microsoft SDKs\Windows\v6.0A\Bootstrapper\
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\GenericBootstrapper\4.0
Path = c:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\
这些是现有文件:
C:\Program Files (x86)\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Engine\setup.bin
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Engine\setup.bin
现有的解决方法是将 Engine 目录复制到项目目录,但是每次创建新项目时都必须执行此操作。
如何正确修复此问题?
最佳答案
通过进程监视器,我发现在尝试访问该路径之前,会使用 DLL 来检索该路径。以下内容可能有点合法,但我还是想分享我的发现。
该DLL位于C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Build.Tasks.v4.0.dll
,所使用的类是 Microsoft.Build.Tasks.Deployment.Bootstrapper.BootstrapperBuilder
。使用您最喜欢的反汇编工具,您可以发现最终进行了三次尝试来检索路径。
- HKLM\Software\Microsoft\GenericBootstrapper\11.0\Path
- HKLM\Software\Wow6432Node\Microsoft\GenericBootstrapper\11.0\Path
- Environment.CurrentDirectory
我不确定为什么它说11.0,据我所知,VS 2012 以前没有安装在这台机器上。
所以 SDK 安装程序中存在错误,或者 DLL 中存在错误。无论哪种方式,创建 11.0 注册表项并添加该值都可以解决此问题。注意:必须重新启动 Visual Studio,因为在尝试检索路径后,它会被缓存。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\GenericBootstrapper\11.0]
"Path"="C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v7.0A\\Bootstrapper\\"
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\GenericBootstrapper\11.0]
"Path"="C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v7.0A\\Bootstrapper\\"
关于visual-studio - 找不到所需的文件 'setup.bin',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11139538/