好的,我正在使用VS2015并升级旧的VC ++ 2010项目,以便在VS2015上运行和编译。该项目是一个使用CLR的Windows窗体项目。
我最近发现该项目现在不能在远程机器上运行,直到最近才开始进行开发。我猜测主要罪魁祸首是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;
这显然会影响我的部分代码,我希望在托管和std之间编组字符串。
任何人都有任何关于如何解决这些问题的建议?感谢
答案 0 :(得分:0)
好的,所以我要继续发布我的解决方案。 无需使用VS2010 V100工具集。
首先,我将目标计算机更新为.NET 4.6。我认为最新的是4.6.2。
然后,我为我的解决方案创建了一个安装项目,并将其命名为&#39; Prog Setup&#39; 。我在设置项目中包含了&#34;主要输出&#34; 和&#34;资源附属DLL&#34; &#39; &#39;检测到依赖关系&#39; 。该向导有助于设置它。
接下来,右键单击“设置项目”,选择&#39;查看&gt;启动条件&#39; ,右键单击 .NET Framework ,选择&#39;属性&#39; 现在检查&#39;版本&#39; 设置为与主项目相同的版本。在我的情况下4.5.2。
最后,右键点击设置项目并选择&#39;属性&#39; ,现在选择&#39;配置下拉菜单&gt;发布&#39; ,点击&#39;先决条件&#39; ,然后选择 .NET 4.6,VC ++ 14运行时库(x86 / x64),Windows Installer 4.5。强>
好的,现在从菜单栏&#39; Build&gt;配置管理器&#39;,确保在&#39; Build&#39;下检查设置项目和主项目。列以确保构建两个项目。
运行构建/重建项目。使用标准VS2015 v140工具集。
在项目解决方案文件夹中,找到以下
VS2015&gt;项目&gt;项目名称&gt; Prog Setup&gt;释放强>
此文件夹包含一个名为&#39; 设置&#39;的应用程序。和我的 Prog设置&#39; Windows Installer程序包。
完成上述所有操作后,我将两个软件包复制到USB记忆棒,然后在目标计算机上,运行应用程序&#39;设置。
然后在目标计算机上下载并安装了VC ++ 14运行时库。然后,它会自动运行 Prog Setup ,它安装了实际的程序软件,并且它现在在目标机器上运行。