VS2008安装项目在安装时始终需要.NET 3.5,但我不需要它!

时间:2020-03-05 18:54:56  来源:igfitidea点击:

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条目,其余所有未选中。因此,对于这种奇怪的运行时要求,我找不到任何原因。有人知道如何解决这个问题吗?

解决方案

回答

即使目标是2.0部署,某些程序集也可能需要3.5. 例如,LINQ需要3.0。但是,这应该在构建时反映出来。检查每个程序集,以确保它与2.0兼容。我们不希望发生任何3.5件事。如果是这种情况,我想那将是一个支持WPF的第三方控件库。

回答

我最终找到了自己问题的答案。

使用记事本比较项目文件我注意到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"
            }
        }
    }

回答

无需手动编辑文件。提示就在GUID上方:" LaunchCondition"。

  • 右键单击安装项目
  • 选择"查看"->"启动条件"
  • 展开"启动条件"节点(如果尚未扩展)
  • 右键单击" .NET Framework"节点,然后选择"属性窗口"
  • 在"属性"窗口中,将"版本"值更改为适当的值,在情况下为2.0.50727.

我不确定为什么从一开始就没有正确设置。

回答

我一直使用Innosetup来部署我的项目。它非常快,而且可自定义。几乎没有什么可以做一点脚本。 Innosetup可以检测到安装了哪个版本的Framework,并在没有正确版本的情况下提示用户(使用脚本)。

我建议我们尝试使用诸如Innosetup之类的替代部署工具,并查看是否喜欢它们。那里有很多机会。