如何在VS2012没有VS2008的情况下,使用Windows SDK,构建带有v90平台的工具集



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

我理解通过安装Windows SDK 7.0可以使用v90平台工具集。具体是怎么做的?如果我只是使用7.0 SP1的web安装程序,我仍然不认为v90是可能的平台工具集之一。

这是可能的,但显然需要一些操作,并且不支持构建MFC应用程序。下面假设安装了VS2012 update 4,但没有安装VS2010和VS2008。

  1. 下载x86 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. 下载x86 SDK 7.1的DVD (GRMSDK_EN_DVD.iso)。挂载ISO或提取其内容,并从上面列出的相同文件夹手动安装MSI文件(除了winsdk_intellidocs,它不存在)。

  3. 转到C:Program Files (x86)Microsoft Visual Studio 9.0。从Common7IDE复制以下文件到VCbin:

    • 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

除了这个答案,我还想补充一下

  1. 你可以简单地运行setup安装SDK 7.0,没有问题。
  2. 您可以通过运行setup安装SDK 7.1,如果您先删除Microsoft Visual c++ 2010 Redistributables并修复以下注册表值:

    [HKEY_LOCAL_MACHINESOFTWAREMicrosoftNET Framework SetupNDPv4Client]
    "Version"="4.0.30319"
    [HKEY_LOCAL_MACHINESOFTWAREMicrosoftNET Framework SetupNDPv4Full]
    "Version"="4.0.30319"
    [HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoftNET Framework SetupNDPv4Client]
    "Version"="4.0.30319"
    [HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoftNET Framework SetupNDPv4Full]
    "Version"="4.0.30319"
    

    安装完成后,您可以(而且可能应该)将这些值恢复到最初的值。

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

  3. 你不需要复制任何dll。MSBuild使用

    HKEY_LOCAL_MACHINESOFTWAREMicrosoftVisualStudio9.0SetupVC@ProductDir
    HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoftVisualStudio9.0SetupVC@ProductDir
    HKEY_LOCAL_MACHINESOFTWAREMicrosoftVisualStudio9.0SetupVS@ProductDir
    HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoftVisualStudio9.0SetupVS@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_MACHINESOFTWAREMicrosoftMicrosoft SDKsWindows@CurrentInstallFolder
    HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoftMicrosoft SDKsWindows@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文件中有很多相关的内容

对VS2013的一个补充/更新:

我的工作设置:

  1. VS2013必须使用VS2010库
  2. 在VS2013中使用WinSDK 7.1 (Yodans 2.)构建工具(v100)
  3. clean install,卸载sdk发行说明中提到的所有内容(可以在http://www.microsoft.com/en-us/download/details.aspx?id=8279的详细信息类别下下载)
  4. Microsoft Windows SDK for Windows 7 (7.1) (Windows SDK核心组件文件)
  5. 应用程序匹配
  6. 调试工具
  7. Windows Performance Toolkit
  8. Microsoft帮助查看器1.0
  9. Microsoft Visual c++ 2010 Redistributable
  10. Microsoft Visual c++ 2010标准版
  11. 另外删除了所有。net和vc++相关的MS软件(必要时未测试)
  • 在VS2013中选择Windows7.1SDK作为平台工具集
  • 错误MSB6006: "CL.exe"被代码退出-1073741515
  • cl.exe使用msobj100.dll, mspdb100.dll, mspdbcore.dll和mspdbsrv.exe
  • 添加到PATH C:Program Files (x86)Microsoft Visual Studio 10.0Common7IDE
  • 构建工作和二进制是可用的(所以现在它的测试Yodan;-))
  • 我的错误:

    1. 复制文件7。上传到C:Program Files (x86)Microsoft Visual Studio 10.0VCbin (Yodans 3.),以为这个目录在PATH中,但它不是!
    2. 所以最好按照Yodan的建议做,我自己在8测试过。上面的

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

    最新更新