12

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

4

4 回答 4

22

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

  1. 右键单击设置项目
  2. 选择“查看”->“启动条件”
  3. 展开“启动条件”节点(如果尚未展开)
  4. 右键单击“.NET Framework”节点并选择“属性窗口”
  5. 在“属性”窗口中,将“版本”值更改为适当的值,在您的情况下为 2.0.50727。

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

于 2008-09-16T10:56:09.367 回答
1

即使您的目标是 2.0 部署,您的某些程序集也可能需要 3.5。例如,LINQ 需要 3.0。但是,这应该在您构建时反映出来。检查每个程序集以确保它与 2.0 兼容。你不希望任何 3.5 的东西偷偷溜进来。如果是这样的话,我的猜测将是一个支持 WPF 的 3rd 方控件库。

于 2008-09-16T01:35:19.073 回答
1

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

使用记事本比较项目文件,我注意到 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"
            }
        }
    }
于 2008-09-16T10:26:09.190 回答
0

我一直使用 Innosetup 来部署我的项目。它非常快,而且非常可定制。几乎没有什么你不能用一点脚本来做的。Innosetup 可以检测安装了哪个版本的框架,并在不存在正确版本时提示用户(使用脚本)。

我建议您尝试其他部署工具,例如 Innosetup,看看您是否喜欢它们。那里有很多机会。

于 2008-12-28T03:56:25.440 回答