将目标框架从 .NET 3.5 更改为 .NET 4.0

Posted

技术标签:

【中文标题】将目标框架从 .NET 3.5 更改为 .NET 4.0【英文标题】:Changing Target Framework from .NET 3.5 to .NET 4.0 【发布时间】:2014-10-09 19:40:33 【问题描述】:

我有一个 C# 类库项目,它定义了一些 Windows 窗体控件。该库面向 .NET 3.5,并从面向 .NET 4.0 的 C++/CLI windows 窗体项目中调用。我想避免让我的应用程序加载/需要多个 .NET 运行时。如果我只是将类库的目标框架更改为 .NET 4.0 是否安全?我还需要进行其他更改吗?从 .NET 3.5 迁移到 .NET 4.0 时存在哪些不兼容性(如果有)?

除了我提到的 windows 窗体应用程序之外,没有其他客户端使用 windows 窗体库。

【问题讨论】:

无需更改类库项目,CLR 自动将 3.5 映射到 4.0 类型。 4.0 中有一些重大错误修复,您依赖此类错误的几率极低。请记住,C++/CLI Winforms 项目的未来是多云的,可能会出现肉丸,VS2012 通过删除项目模板迈出了重要的第一步。 @HansPassant 今后,基于 C++ 的 Windows GUI 应用程序的首选 UI 平台是什么? 好吧,看看你周围。在我身边,这些天每个人都在使用浏览器或手机。 【参考方案1】:

我在 MSDN 上找到了这个页面,它似乎突出了一些迁移问题。

http://msdn.microsoft.com/en-us/library/vstudio/ee941656%28v=vs.100%29.aspx

如果您的 C# 库依赖于第三方组件,您可能还需要查看它们可能具有的框架依赖项。

如果您研究上述内容没有任何框架限制,则只需在项目设置的应用程序部分更改框架的目标版本应该是相对安全的。如果您没有收到任何编译错误,您应该只测试您的应用程序以验证其响应方式。

【讨论】:

【参考方案2】:

由于自 3.5 以来 Windows 窗体没有太大变化,我很确定您不会遇到任何问题,例如破坏 API 问题,它应该只是简单的重新编译。

即使您引用使用旧版本 .NET 框架的库,由于Side-by-Side execution,它仍然可以工作。但即使可能,我仍会更新第三方库以发布 .NET 4.0

我还要补充一点,.NET 4 Winforms 应用程序可以使用并行执行再次引用 .NET 3.5 类库。

【讨论】:

以上是关于将目标框架从 .NET 3.5 更改为 .NET 4.0的主要内容,如果未能解决你的问题,请参考以下文章

为啥将我的目标框架从“.NET Framework 4 Client Profile”更改为“.NET Framework 4”会出现警告消息?

MySQL 连接器 6.3.5 与 .NET 3.5

目标框架为4.0时System.BadImageFormatException

如何将 .NET 标准库更改为 .NET 框架库?

从 Asp.Net 4 项目进入引用的 .Net 3.5 程序集

如何将托管 c++ 库导入 C# 应用程序(目标 .net 版本 3.5)