如何识别加载程序集的框架?

Ric*_*ter 2 .net mixed-mode assemblies

用户向我们报告在安装.NET 4后可以解决我们的应用程序中的一些奇怪行为:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup>
    <supportedRuntime version="v2.0.50727" />
  </startup>
</configuration>
Run Code Online (Sandbox Code Playgroud)

我不知道如果你没有指定一个程序集,它可能会加载到更高但兼容的版本中.

是否有可能确定可执行文件正在执行哪个框架?在运行时?或通过一些外部过程?我想确认是这种情况,并且用户体验不是其他问题的结果.


Process Explorer说EVEMon在2.0下运行,我倾向于怀疑问题是环境问题:

Process Explorer

Nic*_*oiu 5

在程序集的运行代码中,您可以使用System.Environment.Version静态属性来确定执行它的CLR版本.

如果您不想更改汇编代码,可以使用Process Explorer在运行时查看进程中加载​​的DLL.可以从mscoree.dll的版本中识别CLR版本.