types或名称空间名称找不到
我有一个C#
解决scheme与Visual Studio 2010
几个项目。 一个是testing项目(我将称之为“ PrjTest ”),另一个是Windows Forms Application
项目(我将称之为“ PrjForm ”)。 PrjForm引用了第三个项目,它能够成功地引用和使用。
PrjForm引用PrjTest ,而PrjForm有一个using
语句的类:
using PrjTest;
- 引用已被正确添加
-
using
语句是正确的 - 拼写是正确的
- PrjTest成功build立
- PrjForm几乎构build,但在
using PrjTest;
与错误一致:
无法findtypes或名称空间名称“PrjTest”(您是否缺lessusing指令或程序集引用?)
我试过以下解决方法:
- 删除了Resharper(因为Resharper没有任何错误的认识到所引用的项目,我认为这可能值得一试)
- 删除并重新添加引用和使用语句
- 重新创buildPrjForm
- PrjForm目前驻留在PrjTest文件夹内,我试着将它移动到外部文件夹
- 将该解决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软件包:
被引用的项目也可能以.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被设置为特定的文件夹。 像Debug
和Any CPU
,第二个是Debug
和x86
。
我做了什么,我去了Solution->Context menu->Properties->Configuration properties->Configuration
,我设置我所有的项目使用相同的configurationDebug
和x86
,还检查Build
刻度线标记。
然后项目开始build立正确,并能够看到命名空间。
检查你的项目属性,你的参考path应该是这样的:
问候