.NET添加引用后,但在代码中使用using时却找不到命名空间?

在同一个解决方案(.sln)下的A工程(.csproj)引用B工程的.dll后,在代码中使用using是无法找到对应命名空间。

如图1所示,MCC.Client引用了MCC.Business工程生成的.dll,但在图2中,报了“Error 2 The type or namespace name 'UserProfile' could not be found (are you missing a using directive or an assembly reference?) C:\Documents and Settings\a531032\My Documents\visual studio 2010\Projects\MCC\MCC.Client\SysUtility\AppContext.cs 15 24 MCC.Client”的错误。

图1 解决方案结构

图2 编译错误

由于之前修改过工程名称,一直以为是这个原因造成的引用失败,便沿着一下方向查了一遍错误,最终找到了原因。

  • 查找被引用工程(此例中的MCC.Business工程)的Properties/Assembly.cs文件中AssemblyTitleAssemblyProduct是否有误?如图3所示。

图3 MCC.Business的Properties/Assembly.cs文件

  • 右键查看被引用工程(此例中的MCC.Business工程)的属性是否正确?如图4所示

图4 MCC.Business的属性页

  • 查找引用者工程的.csproj中的值是否与MCC.Business的Assembly信息一致?如图5所示

图5 MCC.Client的.csproj文件

  • 查看引用者工程的属性页,字段“Target Framework” 是否置为了“.NET Framework 4 Client Profile”?如图6所示

图6 MCC.Client的属性页

问题找到了

我的问题出在了创建MCC.Client工程(一个WinForm工程)时,VS 2010默认选择了“.NET Framework 4 Client Profile”,以便于在客户端部署时的便捷。但由于MCC.DataAccess工程中引用了System.Data.OracleClient(其并非包含在.NET Framework 4 Client Profile库中,而在.NET Framework 4 Full库中)。之后,MCC.Business引用了MCC.DataAccess生成的.dll,当MCC.Client去引用MCC.Business生成的.dll时,发现该.dll又引用了.NET Framework 4 Client Profile不包含的内容,所以在编译时MCC.Client对MCC.Business的.dll给出编译错误。

========================

.NET Framework 4 Client Profile 相对于 .NET Framework 4 的区别

  • 是后者的一个子集
  • 减少.NET Framework以及包还.NET Framework的应用程序的部署时间
  • 减少.NET Framework部署的失败
  • 减少.NET Framework在ISV软件的所占大小,从而给其软件更多的空间
  • 减少安装了.NET Framework Client Profile的系统受攻击的“界面”,因为Client Profille中部包括ASP.NET和一些服务器所要的组件
  • 从下图可以看到两者大小差异


网址:http://www.cnblogs.com/lichence/archive/2012/02/09/2343966.html 

你可能感兴趣的:(.net,服务器,assembly,asp.net,WinForm,2010)