.NET Framework 4 与 .NET Framework 4 Client Profile
为什么要讨论.NET Framework 4 与 .NET Framework 4 Client Profile
不知道大家遇到过类似的问题不,我先描述一下我遇到的问题:用Microsoft Visual Studio 2010开发项目的时候,需要引入别的现场的DLL(A.dll)了,在引入之前一点问题都没有,能编译成功,也能运行成功。可是引入A.dll后就会报错,编译都通不过,而A.dll你以前也调用过绝对没有错误。到底是哪里的问题呢?答案就是:是.NET Framework 4 Client Profile惹的祸。
我们Visual Studio 2010开发是默认的情况下建立的windows form程序默认的运行平台都是.NET Framework 4 Client Profile。如何检验呢?
1.我们在Visual Studio 2010里面新建一个项目,其过程如下图:
上图是默认的情况,net framework默认的选择也是是.NET Framework 4 ,然后点击OK后建立项目成功,但是你去项目中右键属性,查看一下,结果确如下图:
好了结果出来了,因此我们在Visual Studio 2010里面建立的新项目,都取默认值的情况下起运行平台都为.NET Framework 4 Client Profile。
既然引起错误的是.NET Framework 4 Client Profile,那么什么是.NET Framework 4 Client Profile?
.NET Framework 4 Client Profile 是 .NET Framework 4 已针对客户端应用程序进行优化的一个子集。它提供了适用于大多数客户端应用程序的功能,包括 Windows Presentation Foundation (WPF)、Windows 窗体、Windows Communication Foundation (WCF) 和 ClickOnce 功能。这使得以 .NET Framework 4 Client Profile 为目标的应用程序的部署速度加快且安装包变小。
为什么会有Net Framework 4 Client Profile?
因为以 .NET Framework 4 Client Profile 为目标的应用程序通常具有更小的下载大小和更快的安装时间,从而可以改进部署体验。以 .NET Framework 4 Client Profile 为目标的应用程序有一个较小的再分发软件包,该软件包可在用户计算机安装最小的一组客户端程序集,而无需安装完整版的 .NET Framework 4。
Client Profile是到Net Framework 4才出现吗?
答案是否定的,.NET Framework 3.5 SP1 中就引入了 .NET Framework Client Profile 来改进 .NET Framework 的部署和安装。
.NET Framework 3.5 SP1 Client Profile 和 .NET Framework 4 Client Profile 之间的差异
Visual Studio 2010 那些程序我们建立时其运行目标平台是.NET Framework 4 Client Profile ?
Visual Studio 2010 中以 .NET Framework 4 Client Profile 为目标的几个项目模板。以下是 Visual Studio 2010 中默认以 .NET Framework 4 Client Profile 为目标的项目模板的列表。默认情况下,所有其他项目都以 .NET Framework 4 为目标。
也就是用Visual Studio 2010建立的上述程序默认情况下都是以.NET Framework 4 Client Profile为目标平台的。
.NET Framework 4 与 .NET Framework 4 Client Profile有什么区别呢?
- .NET Framework 4 Client Profile 包含开发客户端应用程序所需的功能,其中包括:
- common language runtime (CLR)
- ClickOnce
- Windows Forms
- Windows Presentation Foundation (WPF)
- Windows Communication Foundation (WCF)
- Entity Framework
- Windows Workflow Foundation
- 语音
- XSLT 支持
- LINQ to SQL
- 适用于Entity Framework和 WCF 数据服务 的运行时设计库。
- Managed Extensibility Framework (MEF)
- 动态类型
- 并行编程功能(例如任务并行库 (TPL))、并行 LINQ (PLINQ) 和协作数据结构 (CDS)
- 调试客户端应用程序
- ASP.NET
- 高级 Windows Communication Foundation (WCF) 功能
- Oracle .NET Framework 数据提供程序
- 用于编译的 MSBuild
NET Framework 3.5 SP1 Client Profile | .NET Framework 4 Client Profile |
---|---|
仅 Web 安装。 | 本地软件包和 Web 安装。 |
仅支持未安装 Microsoft .NET Framework 早期版本的 Microsoft Windows XP SP2 或 SP3 和 x86 体系结构。 | .NET Framework 4 支持的所有平台和 CPU 架构(IA64 除外)。 |
“添加或删除程序”中的单个项。安装完整版 .NET Framework 时,它会替换“程序和功能”中的“Client”,但不能还原。 | .NET Framework 的一部分。.NET Framework 由 .NET Framework 4 Client Profile 和 .NET Framework 4 Extended 组件构成,这两个组件分别存在于“程序和功能”中。 |
Windows Update 会将其升级到完整版 .NET Framework。 | 独立组件。
|
Windows
- WPF 应用程序
- WPF 浏览器应用程序
- WPF 自定义控件库
- WPF 用户控件库
- Windows 窗体应用程序
- Windows 窗体控件库
- 控制台应用程序
- 空项目
- Windows 服务
Office
- 所有 Office 2007 和 Office 2010 项目模板
WCF
- WCF 服务库
工作流
- 活动设计器库
- 活动库
- 工作流控制台应用程序
Visual F#
- F# 应用程序
- F# 教程
Client Profile 是 .NET framework 的子集,针对客户端应用程序进行了优化;也就是Client profile的可供引用的类库不是全部的.NET Framework 4,因此就可能出现我们第一个问题(为什么要讨论.NET Framework 4 与 .NET Framework 4 Client Profile)的所出现的情况。既然这样了,那么我们的解决方案也就有了,手动的把应用程序的目标平台改为.NET Framework 4就ok了。当然,这样改的后果你要承受,那就是安装包变大,而且运行的目标平台必须安装有完整的.NET Framework 4,而不仅仅是 .NET Framework 4 Client Profile,否则一样会报错。
Visual Studio 2012中不会出现会不会出现上面的问题呢?
答案是不会。从开始 .NET Framework 4.5,客户端配置文件中中断,并且只有完整的可再发行组件包程序可用。.NET Framework 4.5提供的优化,例如更小的下载大小,和更快的部署,不需要单独程序部署包。单个再发行组件简化安装过程和简化应用程序的部署选项。在安装 .NET Framework 4.5 时,将 .NET framework 4 Client Profile 更新到完整版本的 .NET Framework。
从3.5 SP1开始,到4.0经历了两个正式版本后,微软又取消了Client Profile这个选项。
参考资料:msdn。