为什么.NET版本与具有相同目标框架版本的两个应用程序不同

时间:2015-07-09 06:00:52

标签: c# .net windows environment-variables

在运行时添加了用于查找.NET版本的小代码:

  1. 示例程序
  2. 专有应用。

            var version = Environment.Version;
            Console.WriteLine(version.ToString());
    
  3. 两者都是使用目标版本.NET Framework 4编译的。

    示例程序输出 4.0.30319.255

    专有应用输出 2.0.50727.8000

    正在编译样本编程并在同一台机器上运行。

    此专有应用程序正在一台构建计算机上编译并部署在其他生产计算机上。

    为什么这种版本的差异存在。

    我应该在专有应用中查找此问题。给我一些指示。

2 个答案:

答案 0 :(得分:1)

首先检查文档:

  

Environment.Version Property

     

获取一个描述major,minor,build和的Version对象   公共语言运行时的修订号。

<强>注意

  

对于.NET Framework 4.5以后,我们不建议使用   Version属性,用于检测运行时的版本;相反,你   可以通过查询确定公共语言运行库的版本   注册表。有关详细信息,请参阅How to: Determine Which .NET Framework Versions Are Installed

请参阅以下链接,了解有关您的问题的更多说明:
How do I detect at runtime that .NET version 4.5 is currently running your code?

  

2.0 vs. 3.0或3.5 Environment.Version没有任何帮助,因为它   因为所有这些框架版本都在使用CLR,所以总是返回2.0   2.0。

也可以阅读:NET Versioning and Multi-Targeting - .NET 4.5 is an in-place upgrade to .NET 4.0

  

请注意,这种就地替换与侧面非常不同   所有在2.0版本上运行的.NET 2.0和3.0 / 3.5的侧面安装   CLR。这两个3.x版本基本上是库增强功能   在核心.NET 2.0运行时之上。这两个版本都在.NET下运行   2.0运行时整个3.x周期没有改变(除了安全补丁和错误修复)。 4.5完全更新   替换.NET 4.0运行时并保留实际版本号   在v4.0.30319

<强>参考文献:
Why does System.Environment.Version report framework 2?

答案 1 :(得分:0)

Environment.Version为您提供CLR使用的版本,而不是.Net框架本身

请参阅How do I detect at runtime that .NET version 4.5 is currently running your code?