![]() |
1
3
你可以试试:
@ Nick 这个问题问得好,我稍后会尝试一下。 Kev |
![]() |
2
3
这是因为技术上。NET 3.5是2.0框架的扩展。最快的方法是包含一个来自的程序集。NET 3.5,看看它是否坏了。
是一个仅包含在3.5版本中的良好组件。此外,您似乎正在使用ASP。NET运行此检查,这确实限制了您,因为您将无法检查在ASP的保护模式下运行的文件系统或注册表。网。或者,您总是可以尝试从GAC加载一个只应在中的程序集。NET 3.5,但是您可能会再次遇到权限问题。 这可能是你问自己“我想实现什么?”并看看是否有其他途径的时候之一。 |
![]() |
3
3
|
![]() |
4
2
@凯文,真的很喜欢你的解决方案。谢谢你的帮助。 使用注册表,代码看起来像这样:
我很好奇这两种方法中的任何一种是否适用于中等信任的环境(尽管我是在完全信任的环境中工作的,所以这对我目前正在做的事情并不重要)。 |
![]() |
5
1
@komradekatz,您的解决方案来自MSDN,方便其他人研究。我不喜欢这个解决方案,因为它使用用户代理来确定版本。这不符合我的需求(我正在编写一个类库,需要知道是否安装了.NET 3.5)。我也质疑这个解决方案的可靠性。
在我的机器上,这输出:
|
![]() |
6
1
另一个有趣的发现是这里存在组件:
你会认为微软会在框架中建立对“最新版本”的检查。 |
![]() |
7
1
如果你想要求安装特定版本的.net,并且可以控制应用程序的分发,你应该真正使用 ClickOnce 。它允许您指定所需的最低版本。Net framework应该安装,它只会在安装时进行检查,这样所有后续的启动都不会受到不必要的检查的阻碍。 此外,使用ClickOnce,您可以免费获得更新。为什么没有人想用它? 要设置ClickOnce应用程序,只需在Visual Studio中右键单击该项目,然后转到“发布设置”。这将为您的应用程序创建一个特殊的构建,您可以将其放置在您的网站上。当用户下载程序时,安装程序将检查是否有任何先决条件,如。网为你。 |
![]() |
8
1
一种选择是使用版本字符串检测4.0:
那么由于2.0和2.5共享CLR版本号,因此需要通过检查注册表来扩展这些版本号。由于这些版本已经发布,因此要查找的字符串是已知的。 |
![]() |
9
0
如果没有任何程序集加载和捕获异常(这很慢),请检查类API在2.0和3.5之间的更改。
Mono Class Status
对此非常有帮助。例如,您可以检查
|