当没有正确的.NET框架版本时,为什么不抛出异常?

Nat*_*ich 6 .net version

我们有一个针对.NET 3.5的.NET应用程序.我们的客户从共享驱动器(很少)运行它,以便拥有一个中央配置文件位置.

我们注意到,如果工作站访问共享驱动器并运行程序,但没有安装.NET 3.5,则没有任何反应,没有错误,没有异常,没有日志条目,它只是不启动.

  • 为什么CLR在Windows中没有显示错误消息?

  • 我可以在代码的开头放一些东西来确保显示正确的错误消息吗?

运行可检查先决条件的安装程序不是一个选项,因为我们只将其安装在一个中心位置.

谢谢.


理想情况下,我们不必有一个包装器来查询.NET版本,似乎该程序无法启动,并且Windows应该在某处报告.我无法相信它会默默地失败.

小智 10

尝试这样的app.config;

<configuration>
    <startup>
        <supportedRuntime version="v3.5" />
    </startup>
</configuration>
Run Code Online (Sandbox Code Playgroud)

我得到一个很好的小对话,就像这样;

---------------------------
moreverfoo.exe - .NET Framework Initialization Error
---------------------------
To run this application, you first must install one of the following 
versions of the .NET Framework:
  v3.5
Contact your application publisher for instructions about obtaining the 
appropriate version of the .NET Framework.
---------------------------
OK   
---------------------------