【问题标题】:Does Microsoft include automatic .NET version checks when launching an application?`Microsoft 在启动应用程序时是否包括自动 .NET 版本检查?`
【发布时间】:2013-06-17 21:30:35
【问题描述】:

我最近在启动我创建的应用程序时检查了正确的 .NET 版本。很简单:

if (Environment.Version.Major < 4)
{
    //Alert user, exit program
}

但是,我注意到当我在没有必要 .NET 版本的计算机上运行我编写的另一个 .NET 应用程序(没有检查)时,出现了一条警告,告诉我无法运行该应用程序。用 VS2012 编写的应用程序是否会自动包含这样的检查,还是我应该写一个?

【问题讨论】:

    标签: .net windows visual-studio-2012 version environment


    【解决方案1】:

    .NET 仅在安装了您的应用程序所针对的版本时才会运行。例如,如果您编写了应用程序并以.NET 4.0 为目标,并且机器没有安装 4.0,则应用程序根本无法启动,因此使用 Environment.Version 进行检查几乎是多余的。

    为了能够在不依赖 .NET(鸡和蛋问题)的情况下真正确定是否安装了 .NET 以及安装了哪个版本,您需要使用不同的语言(如 C++)编写检测应用程序/位,请参阅此article 有关在注册表中查找内容的信息(验证已安装 .NET 版本的少数方法之一),密钥应位于 HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP \

    【讨论】:

      【解决方案2】:

      您的检查不起作用,因为该程序根本无法启动,但请在您的 app.config 中尝试:

      <configuration>
          <startup>
              <supportedRuntime version="v4.0" />
          </startup>
      </configuration>
      

      然后会显示一个漂亮的弹出窗口,向用户显示问题。

      【讨论】:

      • 好的。一个后续问题:如果用户只是从调试文件夹中运行 .exe 并且没有安装程序,弹出窗口是否仍然有效?
      • 当然,唯一不起作用的情况是他们根本没有安装 .net。在这种情况下,您需要一个解决方案,例如在另一个答案中提出的@Jason。
      【解决方案3】:

      这行不通。如果您没有正确版本的 .NET 安装程序,用户只会看到“应用程序已停止工作”消息。

      您可能想做的是 .NET 应用程序引导程序。

      【讨论】:

        猜你喜欢
        • 2021-08-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-28
        • 2010-09-08
        • 2010-11-03
        • 2016-06-06
        相关资源
        最近更新 更多