我得到了:
找不到VS2010中的C#WPF应用程序出现类型或命名空间名称
错误。这段代码编译得很好,但突然间我收到了这个错误。我已经尝试删除Project Reference和using
语句,关闭VS2010并重新启动,但我仍然有这个问题。
为什么会发生这种情况的任何想法,似乎我做的正确的事情参考& using
声明?
我在VS2010中也注意到该命名空间的intellisense工作正常,所以看起来VS2010有项目引用并且一方面看到命名空间,但是在编译期间看不到它?
答案 0 :(得分:416)
这可能是两个项目之间.Net框架版本不兼容的结果。
可以通过两种方式实现:
例如,当应用程序设置为以.Net 4 Client Profile框架为目标,并且它引用的项目以完整的.Net 4框架为目标时,就会发生这种情况。
所以要更清楚:
在这种情况下,解决方案是升级应用程序的框架目标(项目A),或降级引用程序集的目标(项目B)。一个完整的框架应用程序可以引用/使用客户端配置文件框架程序集,但不是相反(客户端配置文件不能引用完整的框架目标程序集)。
请注意,在VS2012或VS2013(使用.Net 4.5作为默认框架)中创建新项目时,您也会收到此错误,并且:
引用项目使用.Net 4.0(当您从VS2010迁移到VS2012或VS2013然后添加新项目时这很常见)
引用的项目使用更大的版本,即4.5.1或4.5.3(您已将现有项目重新定位到最新版本,但VS仍然会创建针对v4.5的新项目,然后您参考新项目中的那些旧项目)
答案 1 :(得分:34)
重新安装nuget包对我来说很有用。在我将.NET Framework版本更改为所有项目的同步之后,仍然为以前的版本安装了一些nuget包(尤其是Entity Framework)。 Packages Manager Console中的此命令将重新安装整个解决方案的包:
// MemberModel class
public string Title {get;set;}
public string FirstName {get;set;}
public string LastName {get;set;}
public Address Address{get;set;}
public string TempCardNumber {get;set;}
public string Email {get;set;}
// Address POCO
public string AddressLine1 {get;set;}
public string AddressLine2 {get;set;}
public string AddressLine3 {get;set;}
public string AddressLine4 {get;set;}
public string TownCity {get;set;}
public string County {get;set;}
public string Postcode {get;set;}
public string PhoneNumber {get;set;}
答案 2 :(得分:27)
构建解决方案时,我遇到了同样的错误(无法找到类型或名称空间')。在它下面我看到一个警告声明“无法解析引用”并确保“程序集存在于磁盘上”。
我很困惑,因为我的DLL非常清楚地位于引用指向的位置。在我尝试构建解决方案之前,VS似乎没有强调任何错误。
我终于意识到了这个问题(至少我怀疑是这个问题)。我在同一个解决方案中构建库文件。因此即使它存在于磁盘上,它也在该位置重建(在某个过程中,库重建我的其他项目 - 在同一个解决方案中 - 引用库必须已经确定库不存在)
当我右键单击项目并仅构建它时,而不是整个解决方案,我没有得到错误。
为了解决这个问题,我将库作为依赖项添加到正在使用它的项目中。
要做到这一点:
这可确保首先构建库项目。
答案 3 :(得分:21)
我不知道为什么会这样,但我删除了VS2015告诉我无法找到的项目参考,并再次添加。解决了这个问题。我试过清理,建立和重新启动VS无济于事。
答案 4 :(得分:6)
首先,我会验证您项目生成的信息是否已损坏。对您的解决方案进行清理和重建。
如果这没有帮助,我过去看过的有关设计师问题的一件事就是打开一个Windows窗体项目,然后再关闭它。不过,这是一个小小的内脏,所以不要屏住呼吸。
答案 5 :(得分:5)
我遇到的一个棘手的情况是:
项目一针对安装了Microsoft.Bcl.Async
软件包的4.0完整框架。
项目二针对4.0完整框架,但在引用Project一个类时不会编译。
一旦我在第二个项目上安装了Async NuGet包,它编译得很好。
答案 6 :(得分:4)
这个对我有用。在您的类中,定义类名,例如:公共类ABC,删除一个字符并稍等一下。您的错误列表将增加,因为您已更改名称。现在放回你输入的字符。这对我有用,希望它也适合你。祝你好运!!!
答案 7 :(得分:3)
我遇到了类似的问题:编译器无法检测同一项目中的文件夹,因此链接到该文件夹的using指令生成错误。就我而言,问题源于重命名文件夹。即使我更新了该文件夹中所有类的命名空间,项目信息也无法更新。我尝试了一切:删除.suo文件和bin和obj文件夹,清理解决方案,重新加载项目 - 没有任何帮助。 我通过删除文件夹和里面的类来解决问题,创建一个新文件夹并在该新文件夹中创建新类(只是移动新文件夹中的类没有帮助)。
PS:就我而言,我正在开发一个Web应用程序,但在不同类型的项目中可能会出现此问题。
答案 8 :(得分:2)
将现有项目从VS2008升级到VS2012时遇到此问题。我发现有两个项目(我创建的只有两个)针对不同的.Net框架(3.5和4.0)。我通过确保两个项目在Target Framework框中都有“.NET Framework 4”,在项目的Application选项卡上解决了这个问题。
答案 9 :(得分:2)
答案 10 :(得分:2)
我遇到了与上述问题相同的问题:VS 2017将引用项目中的一个类强调为错误,但解决方案构建正常,甚至智能感知也能正常工作。
以下是我设法解决此问题的方法:
答案 11 :(得分:2)
[Facepalm]我的问题是我已经用C ++的方式添加了依赖。
转到不会构建的项目,打开解决方案资源管理器中的“References”文件夹,看看是否列出了依赖项。
如果没有,您可以“添加参考”并在“项目”选项卡上选择依赖项。
Boom Shankar。
答案 12 :(得分:2)
我们有一个奇怪的例子,我刚刚解决了这个问题。在主项目中的“using”语句前面有一个隐藏/空白字符。该项目将构建良好,网站工作正常,但引用它的单元测试项目无法构建。
答案 13 :(得分:1)
您也可以尝试删除您认为您遇到问题的代码,看看它是否编译时没有引用该代码。如果没有,请修复它,直到它再次编译,然后重新处理您的疑似问题代码。有时候,当编译器不喜欢别的东西时,我会发现我知道正确的类或方法的奇怪错误。一旦我修复了它真正被挂起的东西,这些“幽灵”错误就会消失。
答案 14 :(得分:1)
我知道它的存在,但是我发现了同样的问题。我的项目确实建立了,然后我将Visual Studio更新到了最新版本,由于无法从单独的程序集中找到类型定义,因此该项目也无法建立。另一个程序集建立良好,主项目正确地引用了它,并且自从建立好之后就没有任何更改。
我清理了整个解决方案并对其进行了重建,但失败了。我自己构建了程序集,然后构建成功。该项目没有建立。我多次清洗和建造,但失败了。然后我打电话给同事看,当我和他一起看的时候,一切都很好。
我认为Visual Studio工具是问题所在,尤其是在我刚刚更新它时。
答案 15 :(得分:1)
该事件发生在Visual Studio 2017中。
答案 16 :(得分:1)
出现同样的错误,我的故事如下:
糟糕的合并(通过git)我的.csproj文件之一有重复的compile
条目,如:
<Compile Include="Clients\Tree.cs" />
<Compile Include="Clients\Car.cs" />
<Compile Include="Clients\Tree.cs" /> //it's a duplicate
如果您在错误窗口中有一个大解决方案和超过300条消息,则很难检测到此问题。 所以我通过记事本打开了损坏的.csproj文件并删除了重复的条目。在我的案例中工作。
答案 17 :(得分:1)
要解决此问题,它还可以帮助删除和重新创建相关解决方案的*.sln.DotSettings
文件。
答案 18 :(得分:1)
就我而言,我有一个在正确的源文件夹中列出的类,但未在解决方案资源管理器中注册。我必须右键单击项目>添加现有项,然后手动选择它丢失的类。然后一切正常!
答案 19 :(得分:1)
我有同样的问题。一天晚上,我的项目将在第二天早上编译错误!。
我最终发现视觉工作室决定“调整”我的一些参考文献并将它们指向其他地方。例如:
System.ComponentModel.ISupportInitialize以某种方式成为“blahblah.System.ComponentModel.ISupportInitialize”
如果你像我一样,vs做一件很粗鲁的事情
答案 20 :(得分:1)
添加我的解决方案,因为它有点不同,并花了我一段时间才弄明白。
在我的情况下,我在一个项目中添加了一个新类,但由于我的版本控制绑定未设置,我需要使文件在Visual Studio外部(通过VC)可写。我已经取消了Visual Studio中的保存,但在我将文件写入VS外部后,我再次在VS中点击Save All。这无意中导致新的类文件没有保存在项目中..所以..Intellisense仍然在引用项目中显示为蓝色和有效,即使我尝试重新编译文件时未找到并获得了找不到类型错误。关闭并打开Visual Studio仍然显示问题(但如果我注意到重新打开时缺少类文件)。
一旦我意识到这一点,修复很简单:将项目文件设置为可写,将缺少的文件读入项目。现在一切都很好。
答案 21 :(得分:1)
我知道这是踢死马,但我有这个错误和框架哪里好。我的问题基本上是说找不到接口,但它构建和访问就好了。所以我开始思考:&#34;为什么只有当别人工作正常时这个界面?&#34;
最终我实际上是使用WCF访问服务,端点的接口使用的是Entity Version 6,其余项目使用的是版本5.而不是使用NuGet我只是复制了nuget包到本地存储库以便重用,并以不同方式列出它们。
e.g。 EntityFramework6.dll 与 EntityFramework.dll 。
然后我添加了对客户端项目和poof的引用,我的错误就消失了。我意识到这是一个边缘案例,因为大多数人不会混合实体框架的版本。
答案 22 :(得分:1)
在我的情况下,问题是在将名称空间更改为与另一个项目中的名称完全相同(有意)之后,程序集的名称也被VS更改,因此有两个程序集具有相同的名称,一个覆盖另一个< / p>
答案 23 :(得分:0)
答案 24 :(得分:0)
我因“使用系统”而收到此错误;将新的库项目添加到我的VS2019解决方案后。将包Newtonsoft.Json(currentversion)添加到库项目中解决了该问题,因为Newtonsoft.Json的依赖项包括库的Dependencies下的NETStandard.Library,并且正在生成警告图标。在我安装Newtonsoft.Json之前,主项目有一个错误,因此我认为它也适用于Library。而且确实如此。
答案 25 :(得分:0)
将一些新代码合并到vs2019项目中后,出现了相同的问题。
重新启动VS,卸载和重新加载项目,确保解决方案中的所有项目都具有相同的ToolsVersion=
和TargetFrameworkVersion
。这些都没有帮助。
我遇到了一个Substrate项目,但找不到(在项目Skin中)命名空间Skin。
最后,我打开Substrate.csproj并检查了所有ProjectReference Include
条目。其他人在那里,但是没有引用Skin,即使Skin确实出现在小项目依赖对话框的复选框中。因此,项目依赖项对话框使用了Skin复选框(并将其保存在某处),但未更改Substrate.csproj。然后,我手动添加了ProjectReference Include
,以确保我具有皮肤项目的正确路径和GUID。
<ProjectReference Include="..\Skin\Skin.csproj"> <Project>{1ad4b5d7-5014-4f5f-983e-2c59ac0e0028}</Project> <Name>Skin</Name> </ProjectReference>
然后我保存了Substrate.csproj并解决了问题。正如其他人所说,这是VS工具的问题
答案 26 :(得分:0)
就我而言,我卸载项目,然后:
打开 myProject.csproj
并将 ToolsVersion="4.0"
更新为 ToolsVersion="12.0"
(我使用的是 2017 年)(使用 Paulus 的答案 https://stackoverflow.com/a/64552201/1594487) .
从 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')" />
问题解决了。
答案 27 :(得分:0)
为此苦了一段时间,而不是第一次。在过去的时间里,通常是配置不匹配,但这次不是。
这一次证明是在我的应用程序中将“自动生成的绑定重定向”设置为true
。
实际上,如果我在我的库中将其设置为true
,则我的库会收到针对Microsoft.Reporting
命名空间中的类型的错误,并且如果我在我的应用程序中将其设置为true
,然后我的应用程序会从我的库中收到有关类型的错误。
此外,对于我的库,该值似乎默认为false
,对于我的应用程序,该值默认为true
。因此,如果我未指定任何一个,则我的库构建良好,但是我的应用程序收到了我的库错误。因此,我必须在应用程序中将其专门设置为false
,否则我将收到此错误,而没有任何指示。
我还发现,如果项目不使用sdk csproj,则无论设置如何,都会得到此消息 。一旦我转换为sdk csproj,设置就会有所不同。
另外,就我而言,这一切似乎都与我的根库中的Microsoft.ReportingServices.ReportViewerControl.Winforms
nuget包有关。
答案 28 :(得分:0)
从VS 2019 Enterprise“降级”到VS 2019 Professional之后,开始出现此问题。 尽管错误显示在“错误”窗口中,但是我可以毫无问题地构建项目。 尝试了该线程的许多解决方案以及诸如均衡目标框架,删除并再次进行引用,删除.suo文件等其他解决方案。 对我有用的只是删除本地存储库中的项目,然后从远程存储库中再次克隆它。
答案 29 :(得分:0)
好吧,几年后使用VS 2017 .NET Core 2.2 Razor Pages,我觉得这个答案可能会对某人有所帮助。 如果是蛇,那会咬我。 我到处乱扔东西,更改名称,重命名模型,突然间我收到此错误:
错误CS0246类型或名称空间名称'UploadFileModel'不能为 找到(您是否缺少using指令或程序集引用?)
在我的.chstml剃须刀页面上用红色下划线标出。 (修复后未加下划线):
@page
@model UploadFileModel
所以,最后,幸运的是,我从最初使用的其他人那里找到了代码,而且很低端,名称空间没有包含.cshtml文件名!!!
这是我的严重虚拟错误,我用名称空间中的页面名称打屁股:
namespace OESAC.Pages.UploadFile
{
public class UploadFileModel : PageModel
{
我原来的代码所要做的就是从命名空间UploadFile中删除页面名称:
namespace OESAC.Pages
{
public class UploadFileModel : PageModel
{
瞧瞧,所有错误都消失了!! 傻我但是您知道,MS使.NET C#MVC的东西确实使我们的非计算机科学家感到困惑。我经常绊倒鞋带,试图找出模型名称,页面名称和使用它们的语法。不应该那么难。那好吧。我希望错误和解决方案可以帮助某人。错误是正确的,没有名为“ UploadFileModel”的命名空间哈哈。
答案 30 :(得分:0)
我在项目资源管理器中打开了项目下方的引用,将鼠标悬停在缺失的引用之一上,很快,它找到了所有内容。然后我就可以成功构建了。
运行 Visual Studio Community 2019,版本 16.8.4
答案 31 :(得分:0)
我正在开发VS 2017社区版,并且对CefSharp nuget包存在相同的问题。
包已成功下载并还原,项目可以成功构建并运行-仅标记表明无法识别名称空间。
我要做的就是打开References
部分,然后单击黄色的感叹号之一。
几秒钟后,标记错误消失了。
答案 32 :(得分:0)
在我的情况下,我在解决方案中有两个项目,我在引用的项目中添加了一个子命名空间,但是在构建时,我没有注意到引用的项目构建失败,并且它使用了上一个成功构建的版本,没有这个新的名称空间,所以错误是正确的,因为它不存在,所以找不到它。解决方案显然是修复引用项目中的错误。
答案 33 :(得分:0)
我知道这个线程很旧,但是无论如何我都在共享,我必须安装导入程序集的所有第三部分依赖项-因为导入的程序集不包含在Nuget包中,因此缺少了它的依赖项。
请帮助:)
答案 34 :(得分:0)
在我的情况下,添加dll作为参考会导致type or namespace name could not be found
错误。但是,直接在bin文件夹中复制和粘贴dll文件可以解决错误。
不知道为什么会这样。
答案 35 :(得分:0)
我的情况与此处讨论的情况相同但直到我从参考列表中移除了System.Core
引用之后才解决它(没有它就一切正常)
希望它会帮助某人,因为这个问题非常令人沮丧
答案 36 :(得分:0)
我尝试使用在本地计算机上作为代理运行的Visual Studio Team Services构建进行构建时出现此错误。
它在我的常规工作区中工作得很好,我能够在本地代理文件夹中打开SLN文件,所有编译好了。
有问题的DLL作为Lib/MyDLL.DLL
存储在项目中,并在csproj文件中引用:
<Reference Include="MYDLL, Version=2009.0.0.0, Culture=neutral, PublicKeyToken=b734e31dca085caa">
<SpecificVersion>False</SpecificVersion>
<HintPath>Lib\MYDLL.dll</HintPath>
</Reference>
事实证明,尽管有提示路径,但它确实找不到文件。我想也许msbuild相对于SLN文件而不是项目文件。
在任何情况下,如果您收到的邮件是Could not resolve this reference. Could not locate the assembly
,请确保该DLL位于msbuild的可访问位置。
我有点作弊,并发现了一条消息说Considered "Reference\bin\xxx.dll"
并且只是将dll复制到那里。
答案 37 :(得分:0)
答案 38 :(得分:0)
对于任何在尝试将自己的网站发布到Azure时遇到此错误的人来说,上述有前途的解决方案都没有帮助我。我在同一条船上 - 我自己的解决方案很好。我最终不得不
有点痛苦但是我能让我的网站发布到Azure的唯一方法。
答案 39 :(得分:0)
在我的情况下,我有一个由外部依赖(xsd2code)构建的文件,并且不知道它的designer.cs文件没有被VS正确处理。在Visual Studio中创建一个新文件并将代码粘贴在其中对我来说很有用。
答案 40 :(得分:-3)
从GAC中删除程序集(C:\ WINDOWS \ assembly文件夹 - 选择您的组合并右键单击并卸载)。因为解决方案使用guid保持引用,如果该引导在GAC中,它将继续采用GAC版本进行编译。