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”。

  1. 右键单击安装项目
  2. 选择“查看”->“启动条件”
  3. 展开“启动条件”节点(如果尚未展开)
  4. 右键单击“.NET Framework”节点并选择“属性窗口”
  5. 在“属性”窗口中,将“版本”值更改为适当的值,在您的情况下为 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,看看您是否喜欢它们。那里有很多机会。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top