用户向我们报告在安装.NET 4后可以解决我们的应用程序中的一些奇怪行为:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v2.0.50727" />
</startup>
</configuration>
我不知道如果你没有指定一个程序集,它可能会加载到更高但兼容的版本中。
是否可以识别可执行文件正在执行哪个框架?在运行时?或通过一些外部过程?我想确认是这种情况,并且用户体验不是其他问题的结果。
Process Explorer称EVEMon在2.0下运行,我倾向于怀疑问题是环境问题:
答案 0 :(得分:5)
在程序集的运行代码中,您可以使用System.Environment.Version静态属性来确定执行它的CLR版本。
如果您不想更改汇编代码,可以使用Process Explorer在运行时查看进程中加载的DLL。可以从mscoree.dll的版本中识别CLR版本。
答案 1 :(得分:1)
没有意义,针对CLR版本2.0.50727的程序不会自动运行.NET 4.0。需要显式.config文件条目。鉴于你的客户对.config文件的威力,这可能是她实际上做的事情,然后发现有麻烦。
答案 2 :(得分:1)
正如Nicole所说,Process Explorer绝对是最简单的方法。您还可以使用WindDBG从完全内存转储中获取此信息。
另请注意,使用4.0时,您可以并排CLR hosting。如果您没有拥有no way of knowing what CLR was loaded的流程,那么在4.0之前。这可能是您遇到所描述行为的原因。