在没有安装正确的.NET Framework的情况下尝试在Windows XP安装上启动C#/ .NET应用程序时,应用程序只会崩溃并显示以下消息:
---------------------------
ThisApp.exe - Application Error
---------------------------
The application failed to initialize properly (0xc0000135).
Click on OK to terminate the application.
---------------------------
OK
---------------------------
对于Joe用户来说,这实际上毫无意义,特别是因为错误代码可能引用除.NET Framework之外的其他内容。
是否有可能以更有意义的消息崩溃? (类似“此应用程序需要运行.NET Framework 3.0。请在http://www.example.com/下载”)
修改
好吧,我做了一些进一步的测试,发现了一些非常有趣的东西。
在干净的 Windows XP SP3安装中(安装了无.NET 框架),无论.NET Framework版本是什么,应用程序都将始终崩溃并显示上述消息目标,除了.NET 4.5和.NET 4.5.1,它们显示更糟糕的消息:
---------------------------
path\to\ThisApp.exe
---------------------------
path\to\ThisApp.exe is not a valid Win32 application.
---------------------------
OK
---------------------------
现在Windows Vista的有趣之处在于,这些实际上在启动应用程序时会考虑 ThisApp.exe.config 文件。
在干净的 Windows Vista SP2安装(默认情况下安装 .NET 3.5 )上,针对.NET 4.0及以上使用.exe.config 导致出现以下消息:
---------------------------
ThisApp.exe - .NET Framework Initialization Error
---------------------------
To run this application, you first must install one of the following versions of the .NET Framework:
v4.0
Contact your application publisher for instructions about obtaining the appropriate version of the .NET Framework.
---------------------------
OK
---------------------------
现在没有.exe.config ,而是显示:
---------------------------
ThisApp.exe - .NET Framework Initialization Error
---------------------------
To run this application, you first must install one of the following versions of the .NET Framework:
v4.0.30319
Contact your application publisher for instructions about obtaining the appropriate version of the .NET Framework.
---------------------------
OK
---------------------------
我知道,这是一个非常小的变化,但我会带着这个来到某个地方。有趣的是,即使面向.NET 4.5和4.5.1,版本号(v4.0或v4.0.30319)也保持不变。
现在进行干净的 Windows 7 SP1安装(默认安装 .NET 4.0客户端配置文件),以.NET 4.0(完整版)和为目标.exe.config 会导致显示the message that was mentioned here:
---------------------------
ThisApp.exe - .NET Framework Initialization Error
---------------------------
To run this application, you first must install one of the following versions of the .NET Framework:
.NETFramework,Version=v4.0
Would you like to download and install .NETFramework,Version=v4.0 now?
---------------------------
Yes No
---------------------------
现在这条消息更像是它。当分别针对.NET 4.5和4.5.1时,该版本也会更改为v4.5和v4.5.1。
然而,没有.exe.config,应用程序正常启动,即使面向.NET 4.0(完整版)及更高版本(甚至4.5)。我想如果我实际上使用的是.NET 4.0或4.5及更高版本的任何功能,应用程序最终会崩溃,但我仍然觉得它非常有趣。假设您可以在应用程序内部检查.NET的正确版本。
我无法在Windows 8 / 8.1上进行测试,但我认为它与Windows 7相同。
无论哪种方式,这都不是一个解决的问题,至少在Windows XP上仍然存在很大的安装基础。
另外,请停止告诉我使用安装程序。我知道。这不是这个问题的关键。
答案 0 :(得分:1)
对于Joe用户来说,这实际上毫无意义,
Joe用户只应启动已安装的程序。安装程序负责处理先决条件。
是否有可能以更有意义的消息崩溃?
不,因为你没有崩溃。不是在.NET中。创建.NET时,microsoft使文件向后兼容。它是可执行文件中的本机初始化代码 - 而不是.NET代码中的内容。没有运行时,.NET代码无法运行。
有趣的是,这是一个已解决的问题。您正在使用一个完全过时的.NET版本,因为它已在最新版本(.NET 4.0向上)中修复,并带有更有意义的对话框。
有参考。取决于直接导致下载/安装对话框的Windows版本。
.NET 3.0非常古老。