从 .NET Framework 1.1、2.0 和 3.5 迁移到 .NET Framework 4

Windows 不再支持 .NET Framework 1.1 和 2.0。 因此,如果不显式安装 .NET Framework 3.5,面向较旧 .NET Framework 版本的应用程序将无法运行。 但是,建议将应用升级到 .NET Framework 4。 本文讨论运行面向旧版 .NET Framework 的应用程序所需的步骤。

重定目标或重新编译

可通过两种方法获取使用 .NET Framework 1.1 编译的应用程序,以在 Windows 7 或更高版本的 Windows作系统上运行:

  • 将应用程序重定向到 .NET Framework 4 及更高版本下运行。

    重定向要求将一个<supportedRuntime>元素添加到应用程序的配置文件中,以允许它在.NET Framework 4及更高版本下运行。

    应用的配置文件是位于同一目录中的 XML 文件,其文件名与应用相同,但扩展名相同 .config 。 例如,对于命名 MyExecutable.exe的应用,应用程序配置文件命名 MyExecutable.exe.config

    此类配置文件采用以下形式:

    <configuration>
       <startup>
          <supportedRuntime version="v4.0"/>
       </startup>
    </configuration>
    
  • 使用面向 .NET Framework 4 或更高版本的编译器重新编译应用程序。 如果最初使用 Visual Studio 2003 开发和编译解决方案,则可以在 Visual Studio 2010(可能更高版本)中打开解决方案,并使用 “项目兼容性 ”对话框将解决方案和项目文件从 Visual Studio 2003 使用的格式转换为Microsoft生成引擎(MSBuild)格式。

    无论是否希望重新编译或重新定目标应用程序,都必须确定应用程序是否受更高版本的 .NET Framework 中引入的任何更改的影响。 这些更改分为两种:

  • .NET Framework 1.1 与后来版本的 .NET Framework 之间发生的重大变更。

  • 在 .NET Framework 1.1 和更高版本的 .NET Framework 之间标记为已弃用或已过时的类型和类型成员。

无论是重新定位还是重新编译您的应用程序,您都应该查看 .NET Framework 1.1 之后发布的每个版本中的重大更改和已淘汰的类型和成员。

重大变化

发生重大更改时,解决方法可能对重定目标的应用程序和重新编译的应用程序都可用,这取决于具体的更改。 在某些情况下,可以将子元素添加到 <应用程序的配置文件的运行时> 元素,以还原以前的行为。 例如,以下配置文件还原 .NET Framework 1.1 中使用的字符串排序和比较行为,并可用于重定目标或重新编译的应用程序。

<configuration>
   <runtime>
      <CompatSortNLSVersion enabled="4096"/>
   </runtime>
</configuration>

但是,在某些情况下,可能需要修改源代码并重新编译应用程序。

若要评估可能的重大更改对应用程序的影响,必须查看以下更改列表:

过时的类型和成员

弃用类型和成员对重定目标应用程序和重新编译应用程序的影响略有不同。 除非已从其程序集物理删除过时的类型或成员,否则使用过时的类型和成员不会影响重定目标应用程序。 重新编译使用过时类型或成员的应用程序通常会生成编译器警告,而不是编译器错误。 但是,在某些情况下,它会生成编译器错误,并且使用过时类型或成员的代码不会成功编译。 在这种情况下,必须在重新编译应用程序之前重写调用过时类型或成员的源代码。 有关过时类型和成员的详细信息,请参阅 类库中的过时内容

若要评估自 .NET Framework 2.0 SP1 发布以来已弃用的类型和成员的影响,请参阅 类库中已过时的内容。 查看 .NET Framework 2.0 SP1、.NET Framework 3.5 和 .NET Framework 4 的过时类型和成员列表。