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


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

我了解可以通过安装Windows SDK 7.0来使用v90平台工具集。究竟是怎么做到的?如果我只是使用 7.0 SP1的Web安装程序,我仍然没有看到v90作为可能的平台工具集之一。


3190
2017-07-16 08:03


起源

在没有留下笔记的情况下进行投票并不会对任何人有所帮助。 - IInspectable


答案:


这是可能的,但显然需要一些机动和 不支持构建MFC应用程序。以下假设已安装VS2012更新4,但未安装VS2010和VS2008。

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

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

  2. 下载 86 DVD的 SDK 7.1 (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

现在,您应该能够在Visual Studio 2012中选择v90平台工具集并使用它进行构建。

解释(和来源):

  • 单独的MSI安装基于此的第二种解决方法 连接报告
  • 7.0和7.1的要求基于 这个问题 (VS2010和VS2008都需要在VS2012中使用v90!)。如果你有VS2010,则不需要SDK 7.1。
  • DLL / EXE复制要求基于 还有一个问题。如果你不复制它们,你会看到 error MSB6006: "CL.exe" exited with code -1073741515

8
2017-07-16 08:03



添加可能是一个更好的主意 C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE 到PATH环境变量而不是步骤#3(未测试)。 - Yodan Tauber
我做了同样的事情,现在v90工具集在Visual Studio 2015中可用。但是构建我的项目会产生错误“必需文件”“缺失”。我试图将Toolset设置为Windows7.1SDK,它产生了相同的结果。有什么建议么? - Awais


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 ;-))

我的错:

  1. 将上面7.中的文件复制到C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ VC \ bin(Yodans 3.),相信这个目录是在PATH中,但事实并非如此!
  2. 所以做得更好,由Yodan吸食并由我自己在上面测试

附:同样的答案是解决这个问题: Visual Studio 2013:CL.exe退出,代码为-1073741515


1
2017-09-04 17:24





此外 这个答案 我想补充一点

  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实际上需要Visual Studio 2010附带的SDK7.0A,而不是单独提供。 Windows7.1SDK工具集是在需要时使用VC2010编译器的工具集。

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


1
2018-01-31 19:32