我们有一个包含300+组件(动态链接库和几个exe)的应用程序。其中一些面向4.0框架,一些使用2.0框架,一些是用原生C++ (无管理的)编写的,一些是用C++/CLI编写的,还有几个是用C++的ManagedExtensions编写的。
现在我们的需求是迁移到.NET框架4.5.2。
所以我的问题是:
如果我只是将所有可执行文件的TargetFramework版本更改为4.5.2,而不更改dll的TargetFramework版本,是否可以?
它能保证我所有的dll都能在4.5.2运行时加载和运行吗?(包括所有C++动态链接库)。
我已经阅读了互联网上的多篇文章,但在混合了C#、托管c++和非托管c++ dlls的情况下,我找不到具体的答案。任何帮助都是非常感谢的。
编辑:我们的团队生成核心库(某种框架)和一些可执行文件(针对2.0框架),这些可执行文件可供其他各种团队使用,以满足客户的特定需求。有些客户还没有从XP迁移过来( XP中使用的最大.NET框架是4.0)。因此,与较新的操作系统一起,我们仍然需要支持使用XP的客户端。
发布于 2015-10-17 15:29:08
虽然2.0项目通常可以在不更改代码的情况下升级到4.5.x,但您可能会遇到不同的.NET版本。考虑到您的项目的规模和复杂性,我必须建议您不要盲目地更改TargetFramework属性并抱着最好的希望。
虽然4.0可执行文件可以加载2.0DLL,但由于我所描述的破坏性更改,因此不建议这样做。
您将会遇到混合C++代码的问题。我建议您从将“C++托管扩展”代码升级(或重写)到C++/CLI开始(您可能希望利用VS2015中提供的C++11和C++14特性)。
我建议单独升级每个项目,并按照您的方式逐步升级依赖链。如果您已经(或将要编写)对系统中更关键的部分进行单元测试和集成测试,这将有所帮助。
发布于 2015-10-17 16:17:25
从2.0迁移到4.5.2只需点击一下作业,而没有人能保证它不会破坏任何东西。最近我把一个were应用升级到了4.5.2,出现了请求验证问题,第三方工具崩溃等等。
所以不能说它会无缝地工作,你必须测试它,看看它是否工作。
现在,2.0和4.5.2的混合可能会导致混乱,因为在编写代码时,您也需要考虑消费应用程序。
https://stackoverflow.com/questions/33183995
复制相似问题