我得到一个:

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

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

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

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


当前回答

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

其他回答

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

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

dotnet build 

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

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

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

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

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

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

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

这可能是两个项目之间的. 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的新项目,然后你从新项目中引用这些旧项目)

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