C#编译时提示未能解析引用的程序

编译时提示

未能解析引用的程序集“worm.Data”,因为它对不在当前目标框架“.NETFramework,Version=v4.0,Profile=Client”中的“System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”具有依赖关系。请删除对不在目标框架中的程序集的引用,或考虑重新确定项目的目标。 (MSB3253)

查看了一下项目属性,发现该项目的目标框架是.NET Framework 4 Client Profile ,而被引用的程序集的

目标框架是.NET Framework 4,将该项目的目标框架修改成.NET Framework 4

编译,通过。

.NET Framework 4 Client Profile是什么呢,微软的说明是这样的:Microsoft .NET Framework 4 Client Profile 提供了 .NET Framework 4 中的一部分功能。此 Client Profile 旨在运行客户端应用程序并启用针对 Windows Presentation Foundation (WPF) 和 Windows 窗体技术的最快部署。

NET Framework 自从 2002 年发展至今,已经历了好几个版本,1.0, 1.1, 2.0, 3.0, 3.5 等不同的版本更替,.NET Framework 的Redistributable Package也愈来愈大,到了 .NET Framework 3.5 SP1 时已经膨胀到 231MB,除非软件本身就很大,不然对于 .NET 软件的Redistribute是相当不利的,除非客户端本身就有安装 .NET Framework,否则几乎都要夹带一个 .NET Framework 的Redistributable Package,如果只是一个小小的应用程序文件 (几十或几百KB) 还要夹一个那 大的 .NET Framework Redistributable Package,大概很多开发人员都会觉得麻烦,就算开发人员接受,但在企业网络的 IT 管理人员就不一定会接受了 … 所以 .NET Framework 的减肥一直都是 .NET 开发人员的愿望与期待,而 .NET Framework Client Profile 就是微软针对这个需要的主要响应。既然 .NET 应用程序不一定会用到所有的 .NET Class Library,那微软就将 .NET Framework 部份不常用的功能由主函数库中抽离出来,让Redistributable Package可以缩小,有利于重新发布应用程序。