.NET Framework Client Profile 导致的引用失效

来源:互联网 发布:linux怎么改变当前路径 编辑:程序博客网 时间:2024/05/16 17:39

当使用Visual Studio 2010创建工程时(已经安装了.Net Framework 3.5 和 .Net Framework 4.0),默认的目标框架是.Net Framework 4 Client Profile,而不是.Net Framework 4。

根据MSDN的说法,.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 Client Profile,是不能够使用其以外的系统程序集的,即使引用了相应的dll文件,也会出现引用失效,在工程的“引用”列表中出现黄色感叹号。

例如,《[C#] 浏览文件夹对话框》一文中需要添加的 System.Design (System.Design.dll) 引用就不在 .NET Framework Client Profile 中。如果项目设置中的“生成框架”选择了 .NET Framework 4 Client Profile,从“引用”-“.NET”中添加类库时无法找到该文件,强行添加 .NET Framework v4.0完整集中的dll文件会在该引用上出现黄色感叹号,也无法使用。解决方法是升级该工程的目标框架为 .NET Framework 4 即可。

事实上,.NET Framework 和 相应版本的.NET Framework Client Profile 的系统程序集位置也是不一样的,以.Net Framework 4.0为例,前者位于C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0 文件夹,后者位于C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Profile\Client 文件夹,大部分类库不能通用。从对象浏览器中可以很清楚地看出。

根据MSDN的说明,从 .NET Framework 4.5 开始,微软不再提供 .NET Framework Client Profile,并且只有完整的可再发行组件包程序可用。

参考资料:

[1] MSDN .NET Framework Client Profile (需要分别查看.NET Framework 3.5/4/4.5三个版本)

 

本文固定链接: http://blog.xieyc.com/net-framework-client-profile-lead-to-a-reference-failure/ | 小谢的小站

0 0
原创粉丝点击