如何使用Windows SDK在没有VS2008的VS2012中使用v90平台工具集进行构建?

时间:2014-07-16 08:03:39

标签: visual-studio-2012 visual-studio-2008

我使用Visual Studio 2012,这是我安装的唯一Visual Studio版本。我需要使用v90平台工具集(Visual Studio 2008)构建某些C ++项目,但我无法安装Visual Studio 2008。

我了解可以通过安装Windows SDK 7.0来使用v90平台工具集。究竟是怎么做到的?如果我只使用the web installer of 7.0 SP1,我仍然不会将v90视为可能的平台工具集之一。

3 个答案:

答案 0 :(得分:9)

这是可能的,但显然需要一些机动和will not support building MFC applications。以下假定已安装VS2012更新4,但未安装VS2010和VS2008。

  1. 下载SDK 7.0 SP1 x86 DVD(GRMSDK_EN_DVD.iso)。挂载ISO或提取其内容,并从Setup文件夹下的以下文件夹中手动安装MSI文件:

    • WinSDK (这可能会失败,没关系)
    • WinSDKBuild
    • WinSDKInterop
    • WinSDKTools
    • WinSDKWin32Tools
    • vc_stdx86
    • vc_stdamd64
    • winsdk_intellidocs
    • WinSDKIntellisenceRefAssys
    • WinSDKNetFxTools

  2. 下载SDK 7.1 x86 DVD(GRMSDK_EN_DVD.iso)。挂载ISO或提取其内容,并从上面列出的相同文件夹手动安装MSI文件(winsdk_intellidocs除外,它不存在)。

  3. 转到C:\Program Files (x86)\Microsoft Visual Studio 9.0。将以下文件从Common7\IDE复制到VC\bin

    • msobj80.dll
    • mspdb80.dll
    • mspdbcore.dll
    • mspdbsrv.exe
  4. 现在,您应该可以在Visual Studio 2012中选择v90平台工具集并使用它进行构建。

    解释(和来源):

    • 单个MSI安装基于此connect report的第二个解决方法。
    • 7.0和7.1的要求基于this question(在VS2012中使用v90需要VS2010和VS2008!)。如果您有VS2010,则不需要SDK 7.1。
    • DLL / EXE复制要求基于yet another question。如果您不复制它们,您会看到error MSB6006: "CL.exe" exited with code -1073741515

答案 1 :(得分:2)

除了this answer我想添加

  1. 您只需运行安装程序即可安装SDK 7.0,没有问题。
  2. 如果先删除Microsoft Visual C ++ 2010 Redistributables并修复以下注册表值,则可以通过运行安装程序来安装SDK 7.1:

    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Client]
    "Version"="4.0.30319"
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full]
    "Version"="4.0.30319"
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4\Client]
    "Version"="4.0.30319"
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4\Full]
    "Version"="4.0.30319"
    

    您可以(也可能应该)将这些值恢复为安装完成后的原始值。

    此后不要忘记安装KB2519277,它会将SDK 7.1中的编译器更新为SP1。

  3. 您无需复制任何dll。 MSBuild使用

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0\Setup\VC@ProductDir
    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\9.0\Setup\VC@ProductDir
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0\Setup\VS@ProductDir
    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\9.0\Setup\VS@ProductDir
    

    设置路径。将它们固定为指向"C:\\Program Files (x86)\\Microsoft Visual Studio 9.0\\VC\\""C:\\Program Files (x86)\\Microsoft Visual Studio 9.0\\"可能是明智之举,因为它可能在构建过程的其他地方有用。

    如果您打算使用Windows7.1SDK工具集,则版本10.0也是如此。

  4. 使用WindowsSdkVer.exe将当前SDK设置为7.1以消除Microsoft.Cpp.x64.Targets(63,5)中关于缺少未命名的所需文件的神秘错误。如果该工具给出错误,请手动设置这些值:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows@CurrentInstallFolder
    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows@CurrentInstallFolder
    

    指向新安装的SDK。该工具需要Visual Studio安装中的一些注册表项才能正常工作,但有很多,我不确定哪些是重要的。

  5. 重新启动。以上都没有问你,但是没有重启我在尝试构建项目时遇到了错误。

  6. 顺便说一句,SDK7.1添加了v100工具集,但它不会工作,说一些Could not find WindowsSDKDir variable from the registry.这是因为v100实际上需要SDK7.0A来使用Visual Studio 2010并不单独提供。 Windows7.1SDK工具集是在需要时使用VC2010编译器的工具集。

  7. Microsoft.Cpp.Win32。*。props文件在构建系统出现故障时有很多相关内容。

答案 2 :(得分:1)

VS2013对Yodans的一个补充/更新回答:

我的工作设置:

  1. VS2013必须使用VS2010库
  2. 在VS2013中使用WinSDK 7.1(Yodans 2.)构建工具(v100)
  3. 清理安装,卸载sdk发行说明中提到的所有内容(可以在类别详细信息下的http://www.microsoft.com/en-us/download/details.aspx?id=8279下载)
    1. 适用于Windows 7的Microsoft Windows SDK(7.1)(Windows SDK核心组件文件)
    2. 应用程序验证程序
    3. Windows调试工具
    4. Windows性能工具包
    5. Microsoft Help Viewer 1.0
    6. Microsoft Visual C ++ 2010 Redistributable
    7. Microsoft Visual C ++ 2010标准版
    8. 另外删除了所有与.NET和VC ++相关的MS软件(必要时未经过测试)
  4. 在VS2013中选择Windows7.1SDK作为平台工具集
  5. 错误MSB6006:“CL.exe”已退出,代码为-1073741515
  6. cl.exe使用msobj100.dll,mspdb100.dll,mspdbcore.dll和mspdbsrv.exe
  7. 添加到PATH C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ Common7 \ IDE
  8. 构建工作和二进制是可用的(所以现在它测试Yodan ;-))
  9. 我的错误:

    1. 将上面7.中的文件复制到C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ VC \ bin(Yodans 3.),相信这个目录是在PATH中,但事实并非如此!
    2. 如Yodan所说的那样做得更好,并且我自己在8以上进行了测试
    3. P.S。同样的答案是解决这个问题: Visual Studio 2013: CL.exe exited with code -1073741515