我得到一个:

找不到类型或名称空间名称

错误的c# WPF应用程序在VS2010。这部分代码编译得很好,但突然就出现了这个错误。我已经尝试删除项目引用和using语句,关闭VS2010并重新启动,但我仍然有这个问题。

有什么想法,为什么这可能会发生,似乎我在做正确的事情re Reference & using语句?

我还注意到在VS2010,智能感知的名称空间是工作的好,所以它似乎VS2010有项目引用,是看到名称空间在一方面,但在编译期间没有看到它?


首先,我将验证您的项目生成的信息是否损坏。在解决方案上进行清理和重新构建。

如果这还不起作用,我在过去看到的一种解决设计器问题的方法是打开一个windows窗体项目,然后再次关闭它。这有点像鸡内脏,所以别抱太大希望。

您还可以尝试删除您认为有问题的代码,并查看是否在没有引用该代码的情况下进行编译。如果不是,请修复问题,直到它再次编译,然后将您怀疑的问题代码重新插入。有时,当编译器不喜欢其他东西时,我就会得到一些我知道是正确的类或方法的奇怪错误。一旦我修复了它真正挂起来的东西,这些“幻影”错误就消失了。

这可能是两个项目之间的. net框架版本不兼容的结果。

它可以通过两种方式发生:

客户档案项目引用了一个完整的框架项目;或 一个针对新框架版本的旧框架版本

例如,当一个应用程序被设置为目标。net 4客户端配置文件框架时,它会发生,而它引用的项目目标是完整的。net 4框架。

更清楚地说:

项目A的目标是客户概要文件框架 项目A引用项目B 项目B的目标是完整的框架

这种情况下的解决方案是要么升级应用程序的框架目标(项目A),要么降级引用程序集的目标(项目B)。完整框架应用程序引用/使用客户端概要文件框架程序集是可以的,但反过来就不行(客户端概要文件不能引用完整框架目标程序集)。

注意,当你在VS2012或VS2013(使用.Net 4.5作为默认框架)中创建一个新项目时,你也会得到这个错误:

引用项目使用。net 4.0(当你从VS2010迁移到VS2012或VS2013,然后添加一个新项目时,这很常见) 引用的项目使用更大的版本,即4.5.1或4.5.3(你已经将现有项目重新定位到最新版本,但VS仍然创建了针对v4.5的新项目,然后你从新项目中引用这些旧项目)

从GAC中删除程序集(C:\WINDOWS\assembly文件夹-选择您的程序集,右键单击并卸载)。因为解决方案使用guid保持引用,如果guid在GAC中,它将继续接受GAC版本进行编译。

我们有一个奇怪的例子,我刚刚在溶液中修正了它。在主项目中的“using”语句前有一个隐藏/空白字符。这个项目可以很好地构建,网站也可以很好地运行,但是引用它的单元测试项目不能被构建。

这个方法对我很管用。在定义了类名的类中,例如:公共类ABC,删除一个字符并等待一会儿。您的错误列表将增加,因为您更改了名称。现在把输入的字符放回去。这对我有用,希望对你也有用。祝你好运! !

在我的案例中,问题是在将命名空间更改为与另一个项目中的名称完全相同之后(有意地),程序集的名称也被VS更改了,因此有两个具有相同名称的程序集,其中一个覆盖了另一个

[Facepalm]我的问题是我在c++的做事方式中添加了依赖。

转到无法构建的项目,在解决方案资源管理器中打开“References”文件夹,查看是否列出了您的依赖项。

如果没有,您可以“添加引用”并在Projects选项卡上选择依赖项。

Shankar繁荣。

在构建解决方案时,我得到了相同的错误(类型或名称空间' '找不到)。在它下面,我看到一个警告,声明“引用无法解析”,并确保“程序集存在于磁盘上”。

我非常困惑,因为我的DLL非常清楚地位于引用所指向的位置。VS似乎没有突出显示任何错误,直到我尝试构建解决方案。

我终于意识到问题所在(或者至少我怀疑是问题所在)。我在同一个解决方案中构建库文件。因此,即使它存在于磁盘上,它也在那个位置被重新构建(在库重新构建的过程中,我的另一个项目-在同一解决方案中-引用了库,必须确定库不存在)

当我右键单击项目并只构建该项目,而不是整个解决方案时,我没有得到错误。

为了解决这个问题,我将库作为依赖项添加到正在使用它的项目中。

这样做:

我在解决方案资源管理器中右键单击我的解决方案并选择 “属性” 然后在“Common Properties”中选择“Project Dependencies”。 然后在项目下拉菜单中,我选择了项目 依靠图书馆,而且 选中“依赖”下的库旁边的复选框

这确保首先构建库项目。

我在将现有项目从VS2008升级到VS2012时遇到了这个问题。我发现有两个项目(我只创建了两个)针对的是不同的. net框架(3.5和4.0)。我在项目的Application选项卡上解决了这个问题,确保两个项目都有“。NET Framework 4”中的目标框架。

我遇到的一个更棘手的情况是: 项目一的目标是安装了Microsoft.Bcl.Async包的4.0完整框架。 项目二的目标是4.0完整框架,但不会在引用项目一的类时编译。

一旦我在第二个项目上安装了Async NuGet包,它编译得很好。

我知道这是踢死马,但我有这个错误和框架在哪里好。我的问题基本上是声明无法找到接口,但它构建和访问都很好。所以我开始思考:“为什么只有这个界面,而其他人都工作得很好?”

最终,我使用WCF的端点接口访问了一个服务,该端点接口使用的是实体版本6,而其余的项目使用的是版本5。我没有使用NuGet,而是简单地将NuGet包复制到本地存储库以供重用,并以不同的方式列出它们。

例如,EntityFramework6.dll vs . EntityFramework.dll。

然后,我将引用添加到客户端项目,噗的一声,我的错误消失了。我意识到这是一个边缘情况,因为大多数人不会混合实体框架的版本。

重新安装nuget包对我来说很有用。在我将. net Framework版本更改为与所有项目同步后,一些nuget包(特别是Entity Framework)仍然为以前的版本安装。这个命令在包管理器控制台中为整个解决方案重新安装包:

Update-Package –reinstall

在我的案例中,我有一个由外部依赖(xsd2code)构建的文件,不知为何它的designer.cs文件没有被VS正确处理。在Visual Studio中创建一个新文件并将代码粘贴进去,这对我来说很管用。

把我的解决方案加入到混合中,因为它有点不同,我花了一段时间来弄清楚。

In my case I added a new class to one project but because my version control bindings weren't set I needed to make the file writable outside of Visual Studio (via the VC). I had cancelled out of the save in Visual Studio but after I made the file writable outside VS I then hit Save All again in VS. This inadvertently caused the new class file to not be saved in the project..however..Intellisense still showed it up as blue and valid in the referencing projects even though when I'd try to recompile the file wasn't found and got the type not found error. Closing and opening Visual Studio still showed the issue (but if I had taken note the class file was missing upon reopening).

当我意识到这一点时,解决方法很简单:将项目文件设置为可写,将丢失的文件读入项目。现在都建好了。

对于那些在试图将网站发布到Azure时遇到这种错误的人来说,上面这些看起来很有希望的解决方案都没有帮助到我。我也在同一条船上——我的解决方案本身构建得很好。最后我不得不这么做

把我溶液里的鸡块都去掉。 关闭并重新打开我的溶液。 重新添加所有的nuget包。

有点痛苦,但这是我能让我的网站发布到Azure的唯一方法。

我也有同样的问题。一天晚上,我的项目会在第二天早上编译错误!

我最终发现visual studio决定“调整”我的一些参考,并将它们指向其他地方。例如:

system。componentmodel。isupportinitialize变成了blahblah。system。componentmodel。isupportinitialize

如果你和我一样,我这样做是很粗鲁的

在我的例子中,我发现VisualStudio中的引用有一个三角形和一个感叹号,就像这个图像,

然后,我右键单击删除它,并正确地添加dll引用,问题就解决了。

我不知道为什么这样工作,但我删除了VS2015告诉我它找不到的项目引用,并再次添加它。解决了问题。我尝试过清理、构建和重新启动VS,但都无济于事。

I had a similar issue: The compiler was unable to detect a folder inside the same project, so a using directive linking to that folder generated an error. In my case, the problem originated from renaming the folder. Even though I updated the namespace of all the classes inside that folder, the project info somehow failed to update. I tried everything: deleting the .suo file and the bin and obj folders, cleaning the solution, reloading the project - nothing helped. I resolved the problem by deleting the folder and the classes inside, creating a new folder and creating new classes in that new folder (simply moving the classes inside the new folder didn't help).

PS:以我为例,我正在开发一个web应用程序,但这个问题可能发生在不同类型的项目中。

在我的例子中,我进入解决方案属性,并确保在两个项目的配置中选中了“Build”。我的主要项目没有检查。

有同样的错误,我的故事如下: 在糟糕的合并(通过git)后,我的一个.csproj文件有重复的编译条目,如:

<Compile Include="Clients\Tree.cs" />
<Compile Include="Clients\Car.cs" />
<Compile Include="Clients\Tree.cs" />        //it's a duplicate

如果您有一个大的解决方案,并且错误窗口中有超过300条消息,那么很难检测到这个问题。 所以我已经通过记事本打开了损坏的.csproj文件,并删除了重复的条目。对我来说很管用。

我在试图以代理的身份在本地机器上运行Visual Studio Team Services构建时遇到此错误。

它在我的常规工作空间中工作得很好,我能够在本地代理文件夹中打开SLN文件,一切都编译好了。

有问题的DLL存储在项目中Lib/MyDLL.DLL,并在csproj文件中引用此DLL:

<Reference Include="MYDLL, Version=2009.0.0.0, Culture=neutral, PublicKeyToken=b734e31dca085caa">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>Lib\MYDLL.dll</HintPath>
</Reference>

结果是,尽管有提示路径,它还是找不到文件。我认为msbuild可能是相对于SLN文件而不是项目文件。

在任何情况下,如果您得到的消息是无法解析此引用。无法定位程序集,请确保DLL位于msbuild可访问的位置。

我有点作弊,发现一条消息说“参考\bin\xxx.dll”,然后把dll复制到那里。

它甚至发生在Visual Studio 2017中。

重启Visual Studio 无法构建的干净项目。 重新构建项目。

我的情况和这里讨论的一样,但在我移除系统之前没有解决它。来自引用列表的核心引用(没有它一切都可以正常工作)

希望这能帮助到一些人,因为这个问题很令人沮丧

我遇到了同样的问题:VS 2017强调引用项目中的一个类为错误,但解决方案构建正常,甚至智能感知工作。

下面是我解决这个问题的方法:

卸载引用的项目 在VS中打开。proj文件(我正在寻找重复的人建议在这里) 重新加载项目(我没有改变甚至保存proj文件,因为我没有任何副本)

要解决这个问题,还可以删除并重新创建*.sln。关联解决方案的DotSettings文件。

我知道这个线程是旧的,但无论如何我共享,我必须安装导入程序集的所有第三方依赖项-因为导入的程序集不包括在Nuget包中,因此它的依赖项丢失了。

跳这个帮助:)

在我的例子中,我在一个解决方案中有两个项目,我在引用的项目中添加了一个子名称空间,但在构建时,我没有注意到引用的项目构建失败,它使用了最后一个成功构建的版本,没有这个新的名称空间,所以错误是正确的,它不能被找到,因为它不存在。解决方案显然是修复引用项目中的错误。

我当时正在做VS 2017社区版,CefSharp的金块包也有同样的问题。

包被成功下载并恢复,项目可以构建并成功运行-只是标记表明名称空间无法识别。

我所要做的就是打开参考资料部分,点击其中一个黄色感叹号。

几秒钟后,标记错误就消失了。

在我的例子中,我有一个在适当的源文件夹中列出的类,但没有在解决方案资源管理器中注册。我必须右键单击项目>添加现有项目,手动选择它说它缺少的类。然后一切都运转正常!

好吧,多年后使用VS 2017 . net Core 2.2 Razor Pages,我觉得这个答案可能会帮助到一些人。 如果是蛇,它会咬我的。 我到处乱扔东西,更改名称,重命名模型,突然我得到了这个错误:

错误CS0246类型或命名空间名称不能为“UploadFileModel” 找到(是否缺少using指令或程序集引用?)

这在我的。chstml Razor Page中用红色划线。(修正后未加下划线):

@page
@model UploadFileModel

所以,最后,幸运的是,我从其他人那里找到了我最初使用的代码,注意,名称空间不包括.cshtml文件名!!

这是我的坏假错误在命名空间的页面名称打我自己:

namespace OESAC.Pages.UploadFile
{
    public class UploadFileModel : PageModel
    {

我的原始代码所拥有的,我所要做的就是从命名空间UploadFile中删除页面名称:

namespace OESAC.Pages
{
    public class UploadFileModel : PageModel
    {

瞧,所有的错误都消失了!! 愚蠢的我。但是你知道,微软让。net c# MVC的东西让我们这些非计算机科学家非常困惑。我经常被鞋带绊倒,试图找出模型名称、页面名称和使用它们的语法。不应该这么难。哦。我希望错误和解决方案能帮助别人。错误是正确的,没有命名空间名为“UploadFileModel”哈哈。

从VS 2019企业版“降级”到VS 2019专业版后开始出现这个问题。 尽管错误显示在“错误”窗口中,但我可以毫无问题地构建项目。 尝试了这个线程和其他线程的许多解决方案,如均衡目标框架,删除并重新引用,删除.suo文件等。 对我来说,有效的方法是删除本地存储库中的项目,并从远程存储库中再次克隆它。

为此挣扎了一段时间,而且不是第一次了。在过去,这通常是配置不匹配造成的,但这次不是。

这一次,在我的应用程序中,自动生成绑定重定向被设置为true。

实际上,如果我在我的库中将它设置为true,那么我的库就会在Microsoft中的类型中得到这个错误。报告名称空间,如果在我的应用程序中将它设置为true,那么我的应用程序将从我的库中获取类型的此错误。

此外,对于我的库,该值似乎默认为false,但对于我的应用程序,该值为true。因此,如果我不指定任何一个,我的库构建正常,但我的应用程序得到了我的库的错误。所以,我必须在我的应用程序中明确地将其设置为false,否则我会得到这个错误,没有说明原因。

我还发现,如果项目没有使用sdk csproj,无论设置如何,我都会收到这条消息。一旦我转换到sdk csproj,设置就会有所不同。

同样,在我的例子中,这一切似乎都与Microsoft.ReportingServices.ReportViewerControl.Winforms nuget包有关,它在我的根库中。

我知道这是老问题了,但我也发现了同样的问题。我的项目确实构建了,然后我将Visual Studio更新到最新&项目不会构建,因为它无法从单独的程序集找到类型定义。另一个程序集构建OK,主项目正确地引用了它&自从它构建OK以来没有任何变化。

我清理了整个解决方案并重新构建了它,它失败了。我自己做了这个组件,它做得很好。这个工程没有建成。我多次清洁和建造,但它失败了。然后我叫了一个同事去看,当我在他的监视下建造时,一切都建好了。

我认为Visual Studio工具是问题所在,特别是我刚刚更新了它。

在将一些新代码合并到vs2019项目后遇到了同样的问题。 重新启动VS,卸载和重新加载项目,确保解决方案中所有项目ToolsVersion=和TargetFrameworkVersion相同。这些都无济于事。

我有一个项目基板的情况,未能找到名称空间皮肤(在项目皮肤)。

最后我打开了基板。并检查了所有的ProjectReference Include条目。其他的都在那里,但没有对Skin的引用,即使Skin确实显示在小项目依赖对话框的复选框中。因此,项目依赖关系对话框接受了皮肤的复选框(并将其保存在某个地方),但没有改变basis .csproj。然后我手动添加ProjectReference Include,确保我拥有皮肤项目的正确路径和GUID。

< ProjectReference Include = " \ Skin皮肤csproj”>。 < > {1ad4b5d7-5014-4f5f-983e-2c59ac0e0028} < - >项目项目 < Name > Skin - < Name > < / ProjectReference >

然后我保存了基板。Csproj,问题就解决了。正如其他人所说,这是VS工具的一个问题

检查包含缺失类型的.cs文件的构建操作。确保它是c#编译器。

单击包含缺失类型的.cs文件。 按F4调出Properties。 确保构建动作设置为c#编译器。

之前:

后:

在我的VS2019解决方案中添加了一个新的库项目后,我得到了“使用系统”的错误。添加包Newtonsoft. json (currentversion)到库项目修复了这个问题,因为对Newtonsoft的依赖。Json包含了NETStandard。库的依赖项下的库,并正在生成一个警告图标。主项目有一个错误,直到我安装了Newtonsoft。Json,所以我认为它也适用于库;它确实做到了。

在我的情况下,我卸载项目,然后:

Opened myProject.csproj and update the ToolsVersion="4.0" to ToolsVersion="12.0"(I'm using vs 2017)(using Paulus's answer https://stackoverflow.com/a/64552201/1594487). Deleted following lines from the myProject.csproj: <Import Project="..\packages\EntityFramework.6.4.0\build\EntityFramework.props" Condition="Exists('..\packages\EntityFramework.6.4.0\build\EntityFramework.props')" /> <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />

问题解决了。

我在项目资源管理器中打开项目下面的引用,将鼠标悬停在其中一个缺失的引用上,很快,它就找到了所有东西。然后我就可以成功地建造了。

运行Visual Studio Community 2019,版本16.8.4

确保您引用的是为项目/文件提供的名称空间。我的问题是,我从另一个项目复制了一个文件,忘记更改名称空间。

当我尝试在云端构建我的项目时,我遇到了这个问题。它在我的本地设备上构建得很好,但在Gitlab CI/CD管道上却不行。

首先要做的是检查你是否上传/推送了所有需要的文件。在我的例子中,我的.gitignore文件配置错误,它忽略了重要的*。元文件。

修复。gitignore并再次推动,使项目在云中等同于我的本地版本,问题解决了。

在面对上述错误时,我发现了一个非常简单的解决方案: 在控制台,我只是运行

dotnet build 

之后,Visual Studio中的所有错误消息都消失了。

检查你的文件扩展名:

工作在vscode和一直得到相同的错误,但一切工作!彩色编码,智能感知,快速操作,文件夹图标....但出于某种原因,它就是建不起来。

最后浏览本地文件系统,注意到类文件上的文件扩展名丢失了,构建一直抱怨这个问题。