类型或名称空间名称不存在


318

我有一个使用Visual Studio 2010构建的WCF数据服务项目,该项目运行良好。突然之间,它不再编译了。它给我的信息是:

错误7类型或名称空间名称'服务'在名称空间'System.Data'中不存在(您是否缺少程序集引用?)C:\ U ... s \ Visual Studio 2010 \ Projects ... \ DataService。 CS ...

错误8类型或名称空间名称'Linq'在名称空间'System'中不存在(您是否缺少程序集引用?)DependencyResolver.cs 3 14

错误10类型或名称空间名称'Web'在名称空间'System.ServiceModel'中不存在(您是否缺少程序集引用?)

错误12找不到类型或名称空间名称'DataService'(您是否缺少using指令或程序集引用?)

我该如何解决?


4
即使添加了这些错误消息,仍然会保留这些错误消息
Attilah 2011年

17
这对我很有用。我不知道为什么关闭它。
gmail用户

2
认为这是因为尽管答案很有用,但最初的问题是开放性的,即使答案确实没有问题,也不太可能与其他人相关
WongKongPhooey 2015年

48
你看!关于SO的有用问题。哦,等等,这是题外话。但是它有大量的支持,还有一个更多支持的答案。这里肯定有“关闭”的地方,但这不是这个问题。
Jagd

3
投票赞成关闭此程序的人怎么会错过问题中非常具体的错误(“名称空间中的类型或名称空间名称不存在”)?我遇到了类似的问题,并搜索了该错误消息,该问题是最主要的结果。因此,这个问题一点也不模糊。
西蒙·图西

Answers:


618

我遇到了同样的问题,我必须将所有项目的“目标框架”设置为相同。然后它构建良好。在项目菜单上,单击ProjectName属性。单击编译选项卡。单击高级编译选项。在目标框架中,选择所需的框架。


13
我通过在解决方案资源管理器中右键单击项目,然后选择属性来设置“目标框架”。目标框架应在默认的“应用程序”选项卡中可见。
Cookie Cookie 2012年

4
@jaminator在某些情况下,这是一个解决方案。至少在我的。由于某种原因,我的项目拒绝接受同一解决方案中存在的名称空间。问题是控制台应用程序以客户端配置文件为目标。
Amadiere'3

3
也为我工作。在添加WPF项目(.NET 4客户端配置文件)和类库项目(.NET 4)参考时发生。谢谢一大堆!
塔马斯·伊努特

58
为此+1。令人误解的错误消息。可能为我省下了数小时的尝试时间。嘿,微软怎么样“因为BLAH是不兼容的版本,所以无法导入名称空间BLAH”,但是我想这将使Nathan失去184个投票。
杰拉尔德·戴维斯

3
对于无法更改项目目标框架的情况,是否有解决方法?
Raj123 2015年

43

我遇到了无法识别System.Linq的问题。该using语句带有红色的波浪状等。我解决该问题的方法是将网站更改为目标dotnet 3.5,然后切换回原始目标框架(本例中为4.0)。


2
也为我工作!但是我不得不做两次...去吧!
nicholeous

手动将同一应用程序的不同目标框架的一些web.config文件合并在一起后,web.config停止工作,出现500内部服务器错误。按照说明进行重置后,Visual Studio 2012会自动从web.config中删除一些旧设置,然后该应用程序再次运行。
humbads 2014年

遇到过类似的问题,我认为某些框架版本只是不能识别System.Linq为有效的库
Callat 2015年

3
谢谢。荒谬的是,该主题已关闭,因为这在浪费一个小时试图弄清楚为什么我的功能和引用突然停止工作后也对我有所帮助。对我来说失败的参考是system.management.automation.dll
Bbb

那真是魔术。就像我的新版Mobile Honor 8X一样,有时更改设置不会立即生效。为了使其正常工作,我必须多次来回切换。
Harish NInge Gowda

28

我发现这是由我具有与类名(MyWorld.MyWorld = Namespace.ClassName)相同的名称空间名称引起的。

将名称空间更改为与您的类不同的名称,它将进行编译。

资源


6
要解决此问题,只需在其前面Windows.Whatever加上前缀global::
joshcomley,2014年

20

当我尝试使用LINQ to SQL时,我在ASP.NET MVC网站上遇到了同样的问题。我通过以下方式解决了这个问题:

解决方案资源管理器->引用->右键单击System.Data.Linq->复制本地(正确)


17

检查以确保您的目标框架具有相同的.NET版本。我遇到了同样的问题,我的课程.NET是3.5,Web解决方案是4.5。我同步了这些,然后就起作用了:)


16
这只是地重复点进行,并在解释之前回答说这是一个发布前几个月
蚊蚋

12

我遇到了同样的问题,并尝试了以上所有方法,但均未成功,然后我发现它是什么:

我在一个项目中创建了一个名为“ System”的文件夹,然后在其中创建一个类。问题似乎源于创建.cs文件时拥有一个名为“ System”的命名空间,即使该文件位于“ MyProject.System”的命名空间中也是如此。

回顾过去,我可以理解为什么这会引起问题。起初确实让我感到难过,因为错误消息最初似乎与问题无关。


1
我也有这个问题,以供参考。如果该工具中有更多说明性错误消息,那将很好,但是哦。
尼克

3
我在MSDN上发布了一些内容,但MS表示这不是错误。我不会对此表示反对,但我希望他们会理解它如何引起问题。
GrandMasterFlush 2014年

1
那真是骗人……
Jitka DarbieHübnerová2015年

12

我在System.Data.SQLite中遇到了同样的问题。问题的根源是您使用的dll与您的项目应具有相同的.NET版本。

例如,如果您(在我的情况下)将SQLite用于.NET 4.5,则您的平台目标也应该是.NET 4.5。

您可以通过以下方式找到平台目标:项目>(项目名称)属性>构建。


1
这解决了我刚刚遇到的一个问题。除了告诉您哪个DLL是问题之外,该错误消息不是很有帮助。
PointlessSpike 2015年

7

就我而言,问题之所以发生是因为我创建的类的名称空间会干扰现有类。新的类A具有名称空间zz.yy.xx(错误)。对另一个名称空间yy.xx中的对象的引用未在类A或名称空间为zz的其他类中进行编译。

我将类A的命名空间更改为yy.xx,它应该已经存在,并且开始工作。


5

对于具有链接文件的任何人:我遇到了这个问题,并且正在使用silverlight,而引发此错误的有问题文件是链接文件。

来自编译器的错误告诉我,该错误发生在文件所在的项目中。最终,该错误不在该项目中,而是在包含链接文件的项目中发生的。该项目缺少参考。


在Windows 10上使用Visual Studio 2013测试项目时,使用System.Management.Automation的.NET 4项目出现了这个问题。将项目升级到.NET 4.5.1已解决问题。
马尔科姆·麦卡菲

2

我在使用Visual Studio的Git集成来管理项目时遇到了此问题。出于某些原因,Windows Phone 8项目在以x86为目标时可以很好地进行编译,但是当我将其设置为以ARM为目标时,它将无法编译,并显示一条错误消息,表明Microsoft名称空间中不存在“广告”。

我最终通过删除Microsoft.Advertising。*。dll引用并再次添加解决了该问题。


1

在我的情况下,项目没有变化,只是停止了编译,并且“类型或名称空间名称XXX不存在”,并且在抱怨类本身对该XXX名称空间/类的智能感知很好。问题出在引用中!

重现步骤:

  1. 解决方案有ProjectA,ProjectB。ProjectA引用第三方log4net并标记为Copy local: true。ProjectB引用ProjectA,但没有引用log4net。 解决方案编译正常。

  2. 将ProjectA:log4net的引用属性更改为Copy local: false

  3. 清理bin和obj文件夹。
  4. 编译时,ProjectA会编译,但是ProjectB抱怨找不到ProjectA命名空间。

This is because ProjectB bin文件夹缺少第三方库 (log4net in my case)!

在这种情况下,解决方案是-

  1. 确保将第三方库引用设置为Copy local: true
  2. 在参考路径下的项目属性中添加此类库的路径。

1

我正在引用Microsoft.CommerceServer.Runtime.Orders并遇到此错误。该项目较旧,并且具有Target framework .NET 2.0。在输出中,我有此错误:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1605,5): warning MSB3268: The primary reference "Microsoft.CommerceServer.Runtime" could not be resolved because it has an indirect dependency on the framework assembly "System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" which could not be resolved in the currently targeted framework. ".NETFramework,Version=v2.0". To resolve this problem, either remove the reference "Microsoft.CommerceServer.Runtime" or retarget your application to a framework version which contains "System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"

我只是将目标框架更改为.NET 4,现在就可以构建了。


1

如果其他所有方法都失败了,例如确保目标框架相同,并且您正在使用VS2010中的WPF类库,则只需重新启动Visual Studio。对我来说就做到了。


在我的vs2010中,一个dll引用有错误,我阅读了dll引用,它看起来很棒,但是在构建之后就 type namespace error发生了。然后我重新启动Visual Studio,重新启动后,再次显示原始dll错误,然后再次阅读并成功构建。
洋剑

0

我遇到了同样的错误。当我发现我的项目使用了错误的程序集名称后(我从另一个项目复制了文件,并且命名空间有些混乱),并将其改回,该项目进行了很好的编译。


尽管这是不赞成的,但这是我的问题!谢谢。
SteveCav '16

0

我收到了非常类似的错误消息,该错误消息是由于无意中在我的解决方案的另一个项目中复制了一个类而引起的。删除重复项可以解决此问题


0

我最近需要进行系统还原,这导致我的一些文件发生更改/消失,这是我自还原以来一直在进行的工作。其中一些是DLL文件。我使用Source Control检索了整个项目,但仍然遇到与上述类似的问题。我找到了这个答案描述了您可能需要删除DLL并阅读它以修复错误。在我的情况下就是这种情况。

删除WebMatrix.WebData和读取它以及添加WebMatrix.Data固定的我的错误The type or namespace name 'Data' does not exist in the namespace 'WebMatrix' ...


-3

如果您在源代码控制下,请删除.refresh.dll文件。然后重建。它应该工作。这对我有用

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.