如何在.NET 3.5上编写的WinForms应用程序启动时检查.net框架版本?如果未安装.net 3.5,则应用程序应显示有关它的消息(可能与.net安装程序或其他方面的链接有关)。现在它显示了一些用户不清楚的错误。
答案 0 :(得分:2)
您必须创建一个以.Net 2.0或非托管应用程序编写的 starter 应用程序(如果根本没有安装.Net版本),请先启动它,然后再启动。安装Net 3.5它将启动真正的应用程序,否则它将显示一个很好的错误消息。
但是,更好的解决方案是让您的安装程序安装.Net 3.5,这样您就不必担心它(但这显然不适用于XCopy部署等)。
答案 1 :(得分:2)
在.NET 3.5应用程序中执行此操作会有点困难,因为您永远无法启动应用程序。
通常,这是通过添加启动条件在应用程序的安装程序中完成的。见http://support.microsoft.com/kb/315291
编辑:我发现了一篇文章,解释了如何在.NET应用程序启动之前编写一个非托管应用程序(如ho1的答案所示) http://blogs.msdn.com/b/astebner/archive/2009/01/31/9387659.aspx答案 2 :(得分:2)
看看这个C ++项目应该做你想要的。
http://www.codeproject.com/KB/mcpp/DotNetTester.aspx
您只需设置快捷方式即可启动该应用,然后启动您的.net应用。
从项目说明:
例如(测试最低FW 1.1并启动应用程序):
dotNetTester.exe 1.1 C:\ Temp \ Myapp.exeC:\ Temp \ Myapp.exe
答案 3 :(得分:1)
我重新阅读了您的问题 - 在未安装.NET x时无法运行.NET x ver应用程序!结束。
如果已安装,则用于其他目的 -
使用System.Environment.Version
查找您当前使用的版本。
要了解所有已安装的版本,check this。
枚举HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ NET Framework Setup \ NDP的子项。每个子键都是.Net版本。如果它存在于计算机上,则应具有Install = 1值,如果使用MSI安装,则应显示Service Pack的SP值和MSI = 1值。 (例如,Vista上的.Net 2.0没有最后一个,因为它是操作系统的一部分)
您可以访问此注册表项“HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ NET Framework Setup \ NDP”并迭代这些值。