警告用户需要.NET Framework要求

4
我有一个使用.NET 3.0的应用程序(工具)。当在只安装了.NET 2.0的机器上运行时(如默认的Server 2008 R2安装),它会崩溃。
目前我所看到的是,人们正在使用一个分流器,首先检查.NET版本。是否有一种方法可以构建它或添加一些清单,以便用户被警告这个问题(并希望提示安装.NET)?
我知道这可以通过安装程序解决,但我有要求它成为一个独立的可执行文件。(好吧,这很难解释,但它与设备驱动程序有关。该工具随驱动程序一起提供,但如果用户不使用该工具,则不应强制其安装.NET 3.0。)
我只需要在一个晦涩的"应用程序已因异常0xe0434f4d而失败"消息的地方停止,并至少给用户一些关于发生了什么的想法。

你的要求是只有一个单一文件吗?如果任何.NET程序集能够告诉用户需要安装框架,我会感到惊讶。 - TalkingCode
1
我很想了解您的需求,需要将其作为独立可执行文件。ClickOnce非常适合检查机器的依赖项,包括下载和安装.NET,自动检查并安装更新,即使它也可以作为安装程序,但它的干扰性很小。;-) - Andy Shellam
3
只需说服规定这些要求的人,安装程序是一个较小的问题。沿着这条路走将不会有好结果,最终你们也会实现自己的安装程序。 - dkackman
真正疯狂的是一开始的崩溃消息。应该有一个存根,说明需要哪个 .NET 版本! - Loren Pechtel
2个回答

4

我没有测试过这个方法,但是有关框架检测的文章中介绍了如何从代码中检测框架版本。我不确定你的应用程序在哪里出现问题,如果注入这样的检查可以解决你的问题,但如果你不能在应用程序中使用它,你可以创建一个小型的“启动应用程序”,在旧的.NET 2.0中执行这些检查,然后告诉用户升级或启动你的“真实”应用程序?

就像我说的,我没有测试过这种方法,这只是我的想法。


+1 很棒的答案。我原本想建议在.NET 2中创建一个“启动器”(或者OP支持的最低版本),但是缺乏准确查找.NET版本的方法。Environment.Version只报告CLR版本,对于3.0和3.5仍然是2.0。 - Andy Shellam
这只是我所说的简单方法。 - moogs
通常这个检查应该在安装程序中执行。但是如果启动器很轻便,那么使用启动器也不是一个坏主意。 - Lex Li

4
这对我来说从未有过任何意义。你会在哪里停止?你也会确保用户不会在Windows 98上安装它吗?机器是否有足够的RAM?用户帐户是否有足够的特权?
软件供应商发布系统要求。您始终引用最低支持的Windows版本、最小内存量、所需磁盘空间、最小浏览器版本等。最低.NET框架版本也应列入此列表。这个列表的目的很明确:如果您不符合要求,不要期望它能正常工作。如果您仍然这样做,那就是您的问题,而不是我的问题。
对于消费级应用程序来说,情况则有所不同。但是当您将其安装到Windows 2008服务器时,您并不是在编写一款面向消费者的应用程序。

我只需要停在一个神秘的“应用程序因异常0xe2334abcb而失败”的消息处,至少让用户知道发生了什么。 - moogs
2
花一两天的时间来解决这个问题,比为那些不阅读手册(几乎所有人)的用户提供无数小时支持电话要更值得。 - moogs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接