【问题标题】:Migration from .NET framework 2.0 to 4.5.2从 .NET 框架 2.0 迁移到 4.5.2
【发布时间】:2015-10-17 07:22:08
【问题描述】:

我们有一个包含大约 300 多个组件(dll 和几个 exe)的应用程序。其中一些针对 4.0 框架,一些使用 2.0 框架,一些使用原生 C++(非托管)编写,一些使用 C++/CLI,其中一些使用 C++ 的 ManagedExtensions 编写。

现在我们的要求是迁移到 .NET Framework 4.5.2。

所以我的问题是:

如果我只是将所有 exe 的 TargetFramework 版本更改为 4.5.2 而不更改 dll 的 TargetFramework 版本,可以吗?

它是否保证我的所有 dll 都已加载并在 4.5.2 运行时运行? (包括所有 C++ dll)。

我在互联网上浏览了多篇文章,但在我们混合使用 C#、托管 c++ 和非托管 c++ dll 的情况下,我找不到具体的答案。任何帮助表示赞赏。

编辑:我们的团队生成核心库(某种框架)和少量可执行文件(针对 2.0 框架),其他团队可以使用它们来满足客户的特定要求。一些客户尚未从 XP 迁移(XP 中使用的 Max .NET 框架为 4.0)。因此,随着更新的操作系统,我们仍然需要支持使用 XP 的客户端。

【问题讨论】:

    标签: c# .net


    【解决方案1】:

    虽然 2.0 项目通常无需更改代码即可升级到 4.5.x,但您可能会遇到的 .NET 版本之间存在重大差异。鉴于您项目的规模和复杂性,我必须建议不要盲目更改 TargetFramework 属性并希望获得最好的结果。

    虽然 4.0 可执行文件可以加载 2.0 DLL,但不建议这样做,因为我描述了重大更改。

    遇到混合 C++ 代码的问题。我建议您首先将“C++ 托管扩展”代码升级(或更确切地说,重写)到 C++/CLI(您可能想利用 VS2015 中存在的 C++11 和 C++14 功能,而您它)。

    我建议单独和单独升级每个项目,沿着依赖链向上工作。如果您拥有(或将要编写)针对系统更关键部分的单元测试和集成测试,这将有所帮助。

    【讨论】:

    • 感谢您的建议。我们很快就会迁移到 c++/CLI。我们使用将可执行文件更改为目标 4.5.2 运行时的方法进行了一些测试,到目前为止我们没有任何问题。您是否有任何可用的功能性重大更改列表。我也会继续搜索它们。
    【解决方案2】:

    从 2.0 迁移到 4.5.2 只是点击点击作业,但不能保证它不会破坏任何东西。最近我将一个 web 应用程序升级到 4.5.2 并且出现了请求验证问题,第三方工具坏了等等。

    因此不能说它会无缝运行,您必须对其进行测试以查看它是否有效。

    现在将 2.0 与 4.5.2 混合可能会导致混乱,因为您在编写代码时也需要考虑消耗应用程序。

    【讨论】:

    • 这是一个很好的观点。事实上,我们也有使用 XP 的客户。这意味着在交付代码时,我们还应该考虑客户可能使用 2.0 或 4.0 框架并测试我们对它们的更改。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-13
    • 1970-01-01
    • 1970-01-01
    • 2013-11-05
    • 2010-09-07
    • 1970-01-01
    相关资源
    最近更新 更多