.NET Framework Client Profile是.NET Framework的裁剪版本。它面向客户端应用程序。它提供 Windows Presentation Foundation (WPF)、Windows 窗体、Windows Communication Foundation (WCF)和 ClickOnce 功能的简化子集。这可以为面向.NET Framework Client Profile 的 WPF、Windows 窗体、WCF 和控制台应用程序实现快速部署方案。
参看:http://msdn.microsoft.com/zh-cn/library/cc656912.aspx
在VS2010 中,你默认建立的 WPF 程序就是.Net Framework 4 Client Profile ,而不是.Net Framework 4。昨天下午到今天早上,我在为 System.Web 无法引用而苦恼的问题,就是它导致的。
VS2010中,我们在项目的属性下,可以看到项目有以下多种 Target framework 属性。
我今天碰到的 Sytem.Web 引用问题如下:
在用 VS2010 Beta2 书写一个WPF应用的时候,要使用 System.Web.HttpUtility.UrlEncode()方法时,发现竟然无法增加对 System.Web 的引用。如下图:
.NET Reference 中没有 System.Web 组件。
使用 Browse 方式打开指定目录的文件 C:\Windows\Microsoft.NET\Framework\v4.0.21006\System.Web.dll 也不行。
如下图:
GAC 中也没有 4.0 版本的 System.Web 组件,如下图:
强制添加 C:\Windows\Microsoft.NET\Framework\v4.0.21006\System.Web.dll 到GAC 时会报错误:
---------------------------
Cannot Add Assembly
---------------------------
Unable to add the selected assembly. The assembly must have a strong name (name, version and public key).
---------------------------
确定
---------------------------
这个文件的信息如下:
但是VS2010 Beta2 建立的 Web 项目,默认就有 System.Web 的引用,这里没有任何问题,如下图:
查看这时候的 System.Web 属性,如下:
把 C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Web.dll 放入 GAC也会报错误:
---------------------------
Cannot Add Assembly
---------------------------
Unable to add the selected assembly. The assembly must have a strong name (name, version and public key).
---------------------------
确定
---------------------------
WPF程序单独指向这个文件的引用,也是跟上面的情况一样。也报错。
上面我碰到的这个问题,只需要简单的把项目的 Target framework 修改为.Net Framework 4 就搞定了。