题
一个用户向我们报告说,在安装.NET 4:我们的应用程序中可以解决某些奇怪的行为:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v2.0.50727" />
</startup>
</configuration>
我不知道,如果您没有指定程序集,则可能会加载以更高但兼容的版本加载。
是否可以识别执行执行的框架?在运行时间?还是通过一些外部过程?我希望确认是这种情况,用户体验并不是其他问题的结果。
Process Explorer表示,Evemon在2.0下运行,我倾向于怀疑问题是环境:
解决方案
从组装的运行代码中,您可以使用system.environment.version static属性来确定其执行的CLR版本。
如果您不想更改装配代码,则可以使用 流程资源管理器 要查看运行时加载中加载的DLL。可以从mscoree.dll的版本中标识CLR版本。
其他提示
没有意义,针对CLR版本2.0.50727的程序不会自动使用.NET 4.0运行。需要一个明确的.config文件条目。考虑到您的客户对.config文件的能力,这可能是她实际上所做的,然后发现那里有麻烦。
正如妮可所说,流程资源管理器绝对是最简单的方法。您还可以使用WINDDBG从完整的内存转储中获取此信息。
另请注意,使用4.0,您并排 CLR托管. 。在4.0之前,如果您没有拥有的过程 无法知道加载了什么CLR. 。这可能是您尝试描述的行为的原因。
不隶属于 StackOverflow