使用Visual Studio 2008,我创建了一个C ++ Win32项目。为了发布程序,我在同一个解决方案中创建了一个Visual Studio安装项目。
setup.exe提示我的用户安装.NET 3.5 SP1,安装时间通常为15分钟以上,并且只允许管理员级帐户使用。如果他们不这样做,就会出现“错误框架”的错误。我对我的项目中需要.NET 3.5 SP1的内容感到困惑。我怀疑只是因为那是我的PC所在的框架......有没有办法扩展它将运行的框架?
代码主要是Win32 API调用。以防万一,这是我的依赖项和#includes:
gdiplus.lib
comctl32.lib
Winmm.lib
d3d9.lib
(安装项目自动添加了comdlg32.dll,然后告诉我将其排除。)
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <fstream>
#include <string.h>
#include <commctrl.h>
#include <process.h>
#include <sstream>
#include <math.h>
#include <d3d9.h>
#include <time.h>
#include <gdiplus.h>
我的猜测是在某个地方通过windows.h有一个WIN_VER或类似的版本设置设置为.NET 3.5 SP1,这是依赖来自的地方。如果是这种情况,并且我需要定义一个不同的版本,我很乐意听到每个人的建议是关于做/不做/如何以及如何最大限度地包含这些内容。
答案 0 :(得分:3)
您是否检查过安装程序项目的先决条件? (右键单击 - &gt; 属性; Prerequesites按钮)。
在我创建的测试项目中,默认情况下选择了.NET框架(我假设它实际上并不分析正在安装的项目,因为它默认情况下不包括C ++运行时库。)
答案 1 :(得分:3)
在VS 2008中,默认目标框架是.NET 3.5。
对于Common Properties页面上的C ++,有一个“Targeted Framework”下拉列表,但是在我创建的测试项目中它显示为灰色,因此在创建项目后看起来无法更改。
我创建了第二个C ++项目并从New Project对话框中选择了2.0 Template,并在“Targeted Framework”中有2.0。
因此,如果您想要定位较低版本的框架,您首先必须正确创建项目。
编辑:关于你应该定位的框架版本 - 这一切都取决于(!)
您需要使用3.0或3.5中的任何一项功能吗?如果没有,那就去2.0吧。如果你这样做,那么选择那个并点击下载。我不能说任何类用户都安装了特定版本的可能性有多大。随着时间的推移,他们将越来越有可能安装3.5,因为其他应用程序将需要它。
答案 2 :(得分:3)
在我的情况下,我解决了UI让我的所有问题,Prerequistes,常见属性......无所谓,仍然想要.NET 3.5。
所以,我在slickedit中打开了vdproj文件并直接修改了它。改变
"ExternalPersistence"
{
"LaunchCondition"
{
"{A06ECF26-33A3-4562-8140-9B0E340D4F24}:_38ABBBBC51344AFFA38F2922DFFFE5B5"
{
"Name" = "8:.NET Framework"
"Message" = "8:[VSDNETMSG]"
"Version" = "8:3.5.30729"
"AllowLaterVersions" = "11:FALSE"
"InstallUrl" = "8:http://go.microsoft.com/fwlink/?LinkId=76617"
}
}
}
到
"ExternalPersistence"
{
}
它不再要求.NET 3.5
答案 3 :(得分:0)
那么,对于C#项目,如果右键单击解决方案资源管理器中的项目文件,然后转到属性,则可以在“应用程序”选项卡上更改目标框架。在C ++项目属性中可能有类似的东西。