types或名称空间名称找不到

我有一个C#解决scheme与Visual Studio 2010几个项目。 一个是testing项目(我将称之为“ PrjTest ”),另一个是Windows Forms Application项目(我将称之为“ PrjForm ”)。 PrjForm引用了第三个项目,它能够成功地引用和使用。

PrjForm引用PrjTest ,而PrjForm有一个using语句的类:

 using PrjTest; 
  1. 引用已被正确添加
  2. using语句是正确的
  3. 拼写是正确的
  4. PrjTest成功build立
  5. PrjForm几乎构build,但在using PrjTest; 与错误一致:

无法findtypes或名称空间名称“PrjTest”(您是否缺lessusing指令或程序集引用?)

我试过以下解决方法:

  1. 删除了Resharper(因为Resharper没有任何错误的认识到所引用的项目,我认为这可能值得一试)
  2. 删除并重新添加引用和使用语句
  3. 重新创buildPrjForm
  4. PrjForm目前驻留在PrjTest文件夹内,我试着将它移动到外部文件夹
  5. 将该解决scheme加载到另一台计算机上,并附带VS 2010的新副本

我做了功课,花了很长时间在网上寻找答案,没有任何解决scheme帮助。

我还有什么可以尝试的?

看到这个问题 。

原来这是一个客户端分析问题。

PrjForm被设置为“.Net Framework 4客户端configuration文件”我将其更改为“.Net Framework 4”,现在我已经成功构build。

感谢大家! 我想这个数字表明,毕竟花在网上search,我发现发布后的解决scheme分钟,我想诀窍是知道正确的问题要问..

PrjForm被设置为“.Net Framework 4客户端configuration文件”我将其更改为“.Net Framework 4”,现在我已经成功构build。

这也适用于我。 非常感谢。 我正在尝试一个dotNet的RDF示例,在这里我从dotnetrdf下载了一个套件。

NET4客户端configuration文件:始终针对所有客户端桌面应用程序(包括Windows窗体和WPF应用程序)的NET4客户端configuration文件。

NET4完全框架:目标NET4仅当应用程序需要的function或程序集未包含在客户端configuration文件中时才有效。 这包括:如果您正在构build服务器应用程序,如:

  • ASP.Net应用程序
  • 基于服务器端ASMX的Web服务

如果您使用传统客户端scheme,例如:o使用在NET4中弃用并且不包含在客户端configuration文件中的System.Data.OracleClient.dll。

  • 使用传统的Windows Workflow Foundation 3.0或3.5(WF3.0,WF3.5)

如果您针对开发人员场景并需要工具(如MSBuild)或需要访问devise组件(如System.Design.dll)

在我的情况下,我有:

引用的DLL: .NET 4.5

项目: .NET 4.0

由于上述不匹配,4.0项目无法在4.5 .DLL的命名空间中看到。 我重新编译.DLL的目标.NET 4.0,我很好。

我解决了我的问题,因为另一个项目是用.NET 4.5编码的,另一个编码为4.0

另外一件可能导致这个错误的事情是NuGet包已经用更新版本的.NET构build了。

原来的错误:

 frmTestPlanSelector.cs(11,7): error CS0246: The type or namespace name 'DatabaseManager' could not be found (are you missing a using directive or an assembly reference?) 

进一步在日志中我发现这个:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1605,5): warning MSB3275: The primary reference "[redacted]\DatabaseManager\bin\Release\DatabaseManager.dll" could not be resolved because it has an indirect dependency on the assembly "System.Data.SQLite, Version=1.0.94.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" which was built against the ".NETFramework,Version=v4.5" framework. This is a higher version than the currently targeted framework ".NETFramework,Version=v4.0".

解决scheme是重新安装NuGet软件包:

http://docs.nuget.org/docs/workflows/reinstalling-packages

被引用的项目也可能以.NET 4.0为目标,而控制台应用程序项目则以.NET 4.0客户端库为目标。

虽然它可能没有涉及到这个特定的情况,我认为别人可以find这个信息有用。

原来我遇到过这个问题。

项目B引用项目A.

项目A编译为A.dll(程序集名称= A)。

项目B编译为A.dll(程序集名称A)。

Visual Studio 2010没有捕捉到这一点。 resharper是好的,但不会编译。 WinFormsdevise师给出了误导性的错误信息,可能是由于不兼容的平台目标造成的。

经过痛苦的一天,解决scheme是确保组件名称不同。

using语句引用一个名称空间 ,而不是一个项目

确保在被引用的项目中有适当命名的命名空间:

 namespace PrjTest { public class Foo { // etc... } } 

阅读有关MSDN上命名空间的更多信息:

  • 使用命名空间

我遇到过同样的问题。 目标框架对我来说很好。 仍然没有工作。 我安装了VS2010 sp1,并在PrjTest上做了一个“Rebuild”。 然后它开始为我工作。

改变框架

 .NET Framework 4客户端configuration文件

为我做了这份工作。

对于COM / ActiveX引用,VS 2012将在使用语句时显示此错误。 这很有趣,因为它可能是你错过了一个使用声明。

为了解决这个问题:即使在邻居工程中注册了实际的COM / ActiveX dll,并通过COM通道添加了一个引用,而不是工程通道。 它将添加Interop.ProjectName而不是ProjectName作为参考,这解决了这个奇怪的错误。

编译的DLL应该有公共类。

如果您的项目(PrjTest)不公开PrjTest命名空间中的任何公共types,它将导致该错误。

项目(PrjTest)是否包含“PrjTest”命名空间中的任何类或types是公共的?

只是将应用程序的目标框架改为“.Net Framework 4”。

错误消失了。

祝你好运; :d

其他可能导致这种行为的问题是构buildconfiguration。

我有两个项目的configuration被设置为特定的文件夹。 像DebugAny CPU ,第二个是Debugx86

我做了什么,我去了Solution->Context menu->Properties->Configuration properties->Configuration ,我设置我所有的项目使用相同的configurationDebugx86 ,还检查Build刻度线标记。

然后项目开始build立正确,并能够看到命名空间。

检查你的项目属性,你的参考path应该是这样的:

项目属性

问候