我们有一个包含大约300多个组件的应用程序(dll和几个exe)。其中一些针对4.0框架,一些使用2.0框架,一些使用本机C ++(无人管理)编写,一些使用C ++ / CLI,其中一些使用ManagedExtensions for C ++编写。
现在我们的要求是迁移到.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支持客户端。
答案 0 :(得分:3)
虽然2.0项目通常可以升级到4.5.x但没有代码更改,但是您可能遇到的.NET版本之间存在分歧。鉴于项目的规模和复杂性,我必须建议不要盲目地改变TargetFramework
属性并希望最好。
虽然4.0可执行文件可以加载2.0 DLL,但由于我所描述的重大更改,不推荐使用它。
你 会遇到混合C ++代码的问题。我建议您首先将“Managed Extensions for C ++”代码升级(或更确切地说,重写)到C ++ / CLI(您可能希望利用VS2015中存在的C ++ 11和C ++ 14特性)它)。
我建议单独和单独升级每个项目,逐步实现依赖链。如果您(或将要编写)单元测试和集成测试用于系统的更关键部分,它将会有所帮助。
答案 1 :(得分:0)
从2.0迁移到4.5.2只是点击点击作业,而没有任何保证,它不会破坏任何东西。最近我将Web应用程序升级到4.5.2并且存在请求验证问题,第三方工具损坏了什么不是。
所以不能说它会无缝地工作,你必须测试它是否有效。
现在将2.0与4.5.2混合可能会导致混乱,因为在编写代码时您也需要考虑使用应用程序。