运行时检测.NET CLR / Framework

3

在运行时是否可以确定以下内容:

  1. 应用程序正在针对哪个版本的.NET Framework 进行开发?

  2. 应用程序是针对完整版还是客户端框架进行开发的?

我尝试使用 Environment.Version,但是结果非常不准确。同样,我也找不到任何关于如何确定正在使用哪个框架的解决方案。


有趣的问题,不过我想知道你为什么需要这样做。毕竟,当你编译代码时,通常必须针对特定的框架和配置文件进行目标设置...? - stakx - no longer contributing
@stakx,我不能说这是“需要”这样做的情况。我只是想知道它是否可能。例如,假设我正在编写一个帮助器类,它将告诉您有关您的应用程序的信息,例如它运行在哪个操作系统上,它正在运行哪个CLR,它正在目标化哪个框架和配置文件等等。 - Matthew Layton
1个回答

4
1) 应用程序针对哪个版本的.NET框架? 一个.NET程序集是针对特定版本的框架。但是你知道,你可以将一个针对.NET 2.0编译的程序集加载到CLR 4.0中。在运行时,你可以通过Environment.Version属性知道用于托管应用程序的CLR版本。
2) 应用程序是否针对完整版或客户端框架? .NET配置文件不能在运行时确定。它仅由Visual Studio使用,在添加引用对话框中灰掉某些程序集,以防止你引用可能在运行时不可用的程序集。顺便说一下,这个概念在.NET 4.5中被删除了。

微软为什么要制作客户端配置文件呢?你肯定可以设置客户端配置文件,然后只需重新引用那些“灰色”的程序集即可。难道不应该在VS中添加功能来检查程序集是否正在使用,并删除那些未被使用的程序集吗? - Matthew Layton

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