使用VS2010编译器编译VS2015项目

Compiling VS2015 project with VS2010 Compiler

好的,所以我正在使用 VS2015 并将旧的 VC++ 2010 项目升级到 运行 并使用 VS2015 进行编译。该项目是一个使用 CLR 的 windows 窗体项目。

我最近发现该项目现在不会 运行 在 vi​​sta 机器上,直到最近我才在这台机器上进行开发。我猜罪魁祸首是 vista 机器上缺少 .NET 4.5。所以我决定尝试使用 VS 2010 工具集和编译器编译它,看看它是否可以在这台机器上运行。

我下载并安装了所有工具链 SDK 7.1 和 7.1 更新,所以现在当我进入

project properties > platform toolset

我有多个选项可以为 VS 2015 v140、VS 2013 v120、SDK7.1 等和 VS 2010 v100 编译。

我遇到的问题是在尝试编译时出现以下错误。

1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(297,5): warning MSB8003: Could not find WindowsSDKDir variable from the registry.  TargetFrameworkVersion or PlatformToolset may be set to an invalid version number.


1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\Microsoft.Cpp.Win32.Targets(62,5): error : Required file "" is missing.

我遇到的第二个问题是我在托管 String^ 和常规 std::string 之间切换。为此,我正在使用编组。选择VS2010工具集时,以下代码产生错误。

#include <windows.h> 
#include <msclr/marshal.h>
#include <msclr/marshal_cppstd.h>

using namespace msclr::interop;

这显然对我希望在托管和标准之间编组字符串的部分代码产生了影响。

有人对如何解决这些问题有任何建议吗?谢谢

好的,所以继续 post 我的解决方案。 无需使用VS2010 V100工具集

首先,我将目标机器更新为.NET 4.6。我认为最新的是 4.6.2.

然后我为我的解决方案创建了一个 安装项目 并将其命名为 'Prog Setup'。我在安装项目的 'Detected Dependencies'[= 中包含了 "primary output""resource satellite DLLs" 54=]。该向导有助于设置它。

下一步,右击安装项目,select'View > Launch Conditions',右击.NET Framework, select 'Properties' 现在检查 'version' 是否设置为与主项目相同的版本。在我的例子中 4.5.2.

最后,右击安装项目select'Properties',现在select'Configuration dropdown > Release',点击'Prerequisites'和select.NET 4.6,VC++14运行time 库 (x86 / x64),Windows 安装程序 4.5.

好的,现在从菜单栏'Build > configuration manager',确保在'Build'列下选中设置项目和主项目,以确保这两个项目已建成。

运行 构建/重新构建项目。使用标准的 VS2015 v140 工具集。

在项目解决方案文件夹中,找到以下内容

VS2015 > 项目 > 项目名称 > Prog Setup > Release

此文件夹包含名为“Setup”的应用程序和我的“Prog Setup”Windows 安装程序包。

完成上述所有操作后,我将两个包复制到 USB 记忆棒,然后在目标机器上,运行 应用程序 'Setup'

然后在目标机器上下载并安装了 VC++ 14 运行time 库。在此之后,它会自动 运行 Prog Setup 安装实际的程序软件,瞧......它现在在目标机器上运行。