为了能够调查我应用程序中报告的问题,我需要知道应用程序在用户端运行的(运行时)环境。除了应用程序版本和操作系统版本外,我还想向用户显示.NET CLR版本和(如果可能的话).NET Framework版本,以便用户可以将这些信息反馈给我。
我找到了几个检测已安装.NET Framework的解决方案,但这不是我需要的。
我起初不关心用户计算机上安装了什么其他软件。实际上没有用于运行我的应用程序的.NET Framework安装定义为其他软件,而不是相关软件。
为了满足CLR版本要求,我发现
然而,阅读文档让我感到焦虑。Environment.Version文档的备注部分指出:
考虑到关于
有没有办法检测正在运行我的应用程序的.NET Framework版本(组件和逻辑)?也许可以通过反射加载的程序集并从特定程序集中获取程序集版本来实现,但这种方法可靠吗?
我找到了几个检测已安装.NET Framework的解决方案,但这不是我需要的。
我起初不关心用户计算机上安装了什么其他软件。实际上没有用于运行我的应用程序的.NET Framework安装定义为其他软件,而不是相关软件。
为了满足CLR版本要求,我发现
Environment.Version.ToString()
很有用。然而,阅读文档让我感到焦虑。Environment.Version文档的备注部分指出:
我理解CLR类似于API,Framework类似于可以更新的组件和实际逻辑。因此,知道CLR版本是一个好的开始,但Framework版本也可能是必需的,因为它可以指出由于实际Framework(逻辑)中的错误而导致的不兼容性。我的应用程序中的错误可能是Framework中的bug造成的,因此我的应用程序中没有bug(但可能有解决方法潜力)。这可以大大加快调试过程。对于.NET Framework 4.5及更高版本,我们不建议使用Version属性来检测运行时版本[...]
考虑到关于
Environment.Version
的备注,我可以安全地使用什么来获取在.NET Framework 4.0到.NET Framework 4.7.2上运行的应用程序的CLR版本?有没有办法检测正在运行我的应用程序的.NET Framework版本(组件和逻辑)?也许可以通过反射加载的程序集并从特定程序集中获取程序集版本来实现,但这种方法可靠吗?
mscorlib.dll
并获取AssemblyFileVersionAttribute
,对吗? - burnersk