VS2008 安装项目在安装时始终需要 .NET 3.5,但我不需要它!
-
09-06-2019 - |
题
1、创建并构建一个默认的Windows Forms项目并查看项目属性。它说该项目的目标是.NET Framework 2.0。
2、创建一个仅安装 Windows 窗体项目中的单个可执行文件的安装项目。
3、运行该安装程序,它总是说需要在计算机上安装.NET 3.5 SP1。但显然它实际上只需要 2.0,因此我不希望客户在不需要时被迫安装 .NET 3.5。他们可能已经安装了 2.0,因此强制升级是不可取的!
我查看了安装项目的先决条件并检查了 .NET Framework 2.0 条目,其余所有内容均未选中。所以我找不到这种奇怪的运行时要求的任何原因。有人知道如何解决这个问题吗?
解决方案
无需手动编辑文件。提示就在 GUID 上方:“LaunchCondition”。
- 右键单击安装项目
- 选择“查看”->“启动条件”
- 展开“启动条件”节点(如果尚未展开)
- 右键单击“.NET Framework”节点并选择“属性窗口”
- 在“属性”窗口中,将“版本”值更改为适当的值,在您的情况下为 2.0.50727。
我不确定为什么从一开始就没有正确设置。
其他提示
即使您的目标是 2.0 部署,某些程序集也可能需要 3.5。例如,LINQ 需要 3.0。然而,这应该在您构建时反映出来。检查每个程序集以确保其与 2.0 兼容。你不希望任何 3.5 的东西潜入。如果是这种情况,我的猜测是支持 WPF 的第 3 方控件库。
我最终找到了我自己问题的答案。
使用记事本比较项目文件,我注意到 VS2008 中的安装项目有一个请求版本 3.5 的条目,而 VS2005 项目中的同一部分被标记为 2.0。奇怪的是,该部分看起来像是您无法在 Visual Studio 环境中手动更改的内容,因此您被迫手动更新项目文件。对于那些遇到相同问题的人来说,这里的任何地方都是项目文件的违规区域......
"Deployable"
{
"CustomAction"
{
}
"DefaultFeature"
{
"Name" = "8:DefaultFeature"
"Title" = "8:"
"Description" = "8:"
}
"ExternalPersistence"
{
"LaunchCondition"
{
"{A06ECF26-33A3-4562-8140-9B0E340D4F24}:_FC497D835F7243569DCCC3E3ACE4196D"
{
"Name" = "8:.NET Framework"
"Message" = "8:[VSDNETMSG]"
"Version" = "8:3.5.30729" <--- UPDATE THIS TO 8:2.0.50727
"AllowLaterVersions" = "11:FALSE"
"InstallUrl" = "8:http://go.microsoft.com/fwlink/?LinkId=76617"
}
}
}
我一直使用 Innosetup 来部署我的项目。它非常快,而且非常可定制。几乎没有什么是你不能通过一些脚本来完成的。Innosetup 可以检测安装的框架版本,并在不存在正确版本时提示用户(通过脚本)。
我建议您尝试其他部署工具,例如 Innosetup,看看您是否喜欢它们。那里有很多机会。