2015-10-17 168 views
3

我们有一个包含300多个组件(dll和几个exe)的应用程序。其中一些目标为4.0框架,一些使用2.0框架,一些使用本地C++编写(unmanged),一些使用C++/CLI,其中一些使用ManagedExtensions for C++编写。从.NET Framework 2.0迁移到4.5.2

现在我们的要求是迁移到.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中使用的最大.NET框架为4.0)。所以随着更新的操作系统,我们仍然需要支持使用XP的客户端。

回答

3

虽然2.0项目通常可以升级到4.5.x而无需更改代码,但是您可能遇到的.NET版本之间存在突破性差异。鉴于你的项目的规模和复杂性,我必须建议不要盲目改变TargetFramework财产,并希望最好。

尽管4.0可执行文件可以加载2.0 DLL,但由于我描述的破坏更改,因此不推荐使用它。

遇到混合C++代码的问题。我建议你首先将你的“Managed Extensions for C++”代码升级(或者说是重写)到C++/CLI(你可能想在VS2015中使用VS2015中的C++ 11和C++ 14功能它)。

我建议单独和分别升级每个项目,按照您的方式处理依赖关系链。如果您已经(或将要编写)针对系统的更关键部分的单元测试和集成测试,它将会有所帮助。

+0

感谢您的建议。我们很快就会迁移到C++/CLI。我们通过将可执行文件更改为目标4.5.2运行时的方法进行了一些测试,到目前为止我们没有发现任何问题。你有没有任何可用的功能突破性更改列表,我会继续搜索它们。 –

0

从2.0迁移到4.5.2只是点击作业,而没有gaurantee它不会破坏任何东西。最近我升级了一个web应用程序到4.5.2,并且出现了请求验证问题,第三方工具崩溃了,什么不是。

所以人们不能说它会无缝地工作,你必须测试它看看它是否工作。

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

+0

这是一个很好的观点。我们实际上也有使用XP的客户。这意味着,在交付代码时,我们还应该考虑到客户可能会使用2.0或4.0框架并在两者上测试我们的更改的事实。 –