我得到一个:
找不到类型或命名空间名称
VS2010 中的 C# WPF 应用程序出错。这部分代码编译得很好,但突然我得到了这个错误。我试过删除项目参考和 using
语句,关闭 VS2010 并重新启动,但我仍然有这个问题。
为什么会发生这种情况的任何想法,似乎我在做正确的事情参考 & using
声明?
我还在 VS2010 中注意到该命名空间的智能感知工作正常,所以看起来 VS2010 有项目引用并且一方面可以看到命名空间,但在编译期间看不到它?
这可能是两个项目之间 .Net 框架版本不兼容的结果。
它可以通过两种方式发生:
引用完整框架项目的客户资料项目;或针对较新框架版本的较旧框架版本
例如,当应用程序设置为针对 .Net 4 Client Profile 框架,并且它引用的项目针对完整的 .Net 4 框架时,就会发生这种情况。
所以为了更清楚:
项目 A 以 Client Profile 框架为目标
项目 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 的新项目,然后您从新项目)
重新安装 nuget 包对我有用。在我将 .NET Framework 版本更改为与所有项目同步后,仍然为以前的版本安装了一些 nuget 包(尤其是 Entity Framework)。 Packages Manager Console 中的此命令会重新安装整个解决方案的软件包:
Update-Package –reinstall
Update-Package -reinstall
时,我在所有解决方案中都遇到了几个错误,其中包括这个包的不同版本。我全部更新然后它终于运行了。它还修复了 package.json 文件中的引用从 45 到 452,因为我之前也更改了目标版本。
我不知道为什么会这样,但是我删除了 VS2015 告诉我它找不到的项目引用,并再次添加了它。解决了这个问题。我尝试过清理、构建和重新启动 VS 均无济于事。
在构建解决方案时,我遇到了同样的错误(找不到类型或命名空间“”)。在它下面我看到一条警告,指出“无法解析引用”并确保“程序集存在于磁盘上”。
我很困惑,因为我的 DLL 非常清楚地位于引用指向的位置。 VS 似乎没有突出任何错误,直到我尝试构建解决方案。
我终于意识到了这个问题(或者至少我怀疑是这个问题)。我在同一个解决方案中构建库文件。因此,即使它存在于磁盘上,它也会在该位置重建(不知何故,在重建库的过程中,我的另一个项目 - 在同一个解决方案中 - 引用了该库必须确定该库不存在)
当我右键单击该项目并仅构建它而不是整个解决方案时,我没有收到错误消息。
为了解决这个问题,我将该库作为依赖项添加到正在使用它的项目中。
去做这个:
我在解决方案资源管理器中右键单击我的解决方案并选择“属性”然后在“通用属性”中选择“项目依赖项”。然后在 Projects 下拉菜单中,我选择了依赖于库的项目,并选中了“Depends On”下找到的库旁边的框
这可确保首先构建库项目。
首先,我将验证您的项目生成的信息没有损坏。对您的解决方案进行清理和重建。
如果这没有帮助,我在过去看到设计器问题的一件事是打开一个 Windows 窗体项目,然后再次关闭它。不过,这有点鸡内脏,所以不要屏住呼吸。
我遇到的一个更棘手的情况是:项目一的目标是安装了 Microsoft.Bcl.Async
包的 4.0 完整框架。项目二以 4.0 完整框架为目标,但在引用项目一类时无法编译。
一旦我在第二个项目上安装了 Async NuGet 包,它就编译得很好。
就我而言,我发现 VisualStudio 中的引用有一个三角形和一个感叹号作为这个图像,
https://i.stack.imgur.com/0EcW7.png
然后,我右键删除它,并再次正确添加dll引用,问题就解决了。
我有一个类似的问题:编译器无法检测到同一项目中的文件夹,因此链接到该文件夹的 using 指令产生了错误。就我而言,问题源于重命名文件夹。即使我更新了该文件夹中所有类的命名空间,项目信息也无法更新。我尝试了一切:删除 .suo 文件以及 bin 和 obj 文件夹,清理解决方案,重新加载项目 - 没有任何帮助。我通过删除文件夹和其中的类、创建一个新文件夹并在该新文件夹中创建新类来解决问题(只是在新文件夹中移动类没有帮助)。
PS:就我而言,我正在开发一个 Web 应用程序,但这个问题可能会出现在不同类型的项目中。
这个对我有用。在您的班级中,定义了班级名称,例如:公共班级 ABC,删除一个字符并稍等。您的错误列表将增加,因为您更改了名称。现在放回您输入的字符。这对我有用,希望它也对你有用。祝你好运!!!
[Facepalm] 我的问题是我在 C++ 做事方式中添加了依赖项。
转到不会构建的项目,在解决方案资源管理器中打开“参考”文件夹,查看是否列出了您的依赖项。
如果没有,您可以“添加参考”并在“项目”选项卡上选择依赖项。
轰香卡。
检查包含缺失类型的 .cs
文件的 Build Action。确保它是 C# 编译器。
单击包含缺失类型的 .cs 文件。按 F4 调出属性。确保 Build Action 设置为 C# 编译器。
前:
https://i.stack.imgur.com/1OBh8.png
后:
https://i.stack.imgur.com/4RPEb.png
有同样的错误,我的故事如下:在错误合并(通过 git)后,我的一个 .csproj 文件重复了 compile
条目,例如:
<Compile Include="Clients\Tree.cs" />
<Compile Include="Clients\Car.cs" />
<Compile Include="Clients\Tree.cs" /> //it's a duplicate
如果您有一个大型解决方案并且错误窗口中有超过 300 条消息,则很难检测到此问题。所以我通过记事本打开了损坏的 .csproj 文件并删除了重复的条目。在我的情况下工作。
我遇到了与讨论相同的问题:VS 2017 将引用项目中的一个类强调为错误,但解决方案构建正常,甚至智能感知工作。
这是我设法解决此问题的方法:
卸载引用的项目 在 VS 中打开 .proj 文件(我正在寻找重复项,正如有人在此处建议的那样)再次重新加载项目(我没有更改甚至保存 proj 文件,因为我没有任何重复项)
它甚至发生在 Visual Studio 2017 中。
重新启动无法生成的 Visual Studio Clean 项目。重建项目。
我们有一个奇怪的案例,我刚刚在一个解决方案中解决了这个问题。主项目中的“使用”语句前面有一个隐藏/空白字符。该项目将构建良好,网站运行良好,但无法构建引用它的单元测试项目。
我在将现有项目从 VS2008 升级到 VS2012 时遇到了这个问题。我发现两个项目(我创建的唯一两个)针对不同的 .Net 框架(3.5 和 4.0)。我在项目的应用程序选项卡上解决了这个问题,确保两个项目的目标框架框中都有“.NET Framework 4”。
在我的情况下,我有一个在正确的源文件夹中列出的类,但没有在解决方案资源管理器中注册。我必须右键单击项目>添加现有项目并手动选择它说它丢失的那个类。然后一切正常!
我知道它很旧,但我发现了同样的问题。我的项目确实构建了,然后我将 Visual Studio 更新到最新版本,并且该项目无法构建,因为它无法从单独的程序集中找到类型定义。另一个程序集构建正常,主项目正确引用了它,并且自构建正常以来没有任何变化。
我清理了整个解决方案并重建了它,但它失败了。我自己构建了程序集,它构建好了。该项目没有建立。我多次清洁和建造,但都失败了。然后我打电话给同事看,当我和他一起看时,一切都建好了。
我认为 Visual Studio 工具是问题所在,尤其是当我刚刚更新它时。
您也可以尝试删除您认为有问题的代码,并查看它是否在没有引用该代码的情况下编译。如果不是,请修复问题,直到它再次编译,然后重新处理您怀疑的问题代码。有时,当编译器不喜欢其他东西时,我会收到关于我知道是正确的类或方法的奇怪错误。一旦我修复了它真正挂断的东西,这些“幻影”错误就会消失。
我知道这是在踢死马,但我遇到了这个错误并且框架很好。我的问题基本上是说找不到接口,但它可以正常构建和访问。所以我开始思考:“为什么在其他人工作正常的情况下只有这个界面?”
最后,我实际上是使用 WCF 访问服务,其端点接口使用的是实体版本 6,而其余项目使用的是版本 5。我没有使用 NuGet,而是将 nuget 包复制到本地存储库以供重用和以不同的方式列出它们。
例如 EntityFramework6.dll 与 EntityFramework.dll。
然后我添加了对客户端项目的引用,然后我的错误就消失了。我意识到这是一个边缘案例,因为大多数人不会混合使用实体框架的版本。
将我的解决方案添加到混合中,因为它有点不同,我花了一段时间才弄清楚。
在我的情况下,我向一个项目添加了一个新类,但由于没有设置我的版本控制绑定,我需要使文件在 Visual Studio 之外可写(通过 VC)。我已经取消了 Visual Studio 中的保存,但是在我使文件在 VS 之外可写之后,我在 VS 中再次点击 Save All。这无意中导致新的类文件没有保存在项目中..但是..Intellisense 仍然在引用项目中显示为蓝色并且有效,即使当我尝试重新编译该文件时没有找到并得到类型未找到错误。关闭和打开 Visual Studio 仍然显示问题(但如果我注意到重新打开时类文件丢失)。
一旦我意识到这一点,修复很简单:将项目文件设置为可写,将丢失的文件读取到项目中。现在一切都很好。
我遇到过同样的问题。一天晚上,我的项目将在第二天早上编译错误!。
我最终发现 Visual Studio 决定“调整”我的一些参考资料并将它们指向其他地方。例如:
System.ComponentModel.ISupportInitialize 不知何故变成了“blahblah.System.ComponentModel.ISupportInitialize”
如果你和我一样,vs 这样做是一件很不礼貌的事情
我的情况与此处讨论的相同,但在我从引用列表中删除 System.Core
引用之前没有任何解决方案(没有它一切正常)
希望它会帮助某人,因为这个问题非常令人沮丧
要解决此问题,还可以删除并重新创建关联解决方案的 *.sln.DotSettings
文件。
好的,多年后使用 VS 2017 .NET Core 2.2 Razor Pages 我觉得这个答案可能对某人有所帮助。如果它是一条蛇,它会咬我。我到处乱扔东西,更改名称,重命名模型,突然间我收到了这个错误:
错误 CS0246 找不到类型或命名空间名称“UploadFileModel”(您是否缺少 using 指令或程序集引用?)
这在我的 .chstml Razor 页面中用红色下划线。 (修复后没有下划线):
@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”的命名空间哈哈。
在我的情况下,问题是在将命名空间更改为与另一个项目中的完全相同之后(故意),程序集的名称也被 VS 更改了,所以有两个同名的程序集,一个覆盖另一个
将一些新代码合并到 vs2019 项目后遇到了同样的问题。重新启动 VS,卸载和重新加载项目,确保解决方案中的所有项目具有相同的 ToolsVersion=
和 TargetFrameworkVersion
。这些都没有帮助。
我有一个项目 Substrate 的案例,未能找到命名空间 Skin(在项目 Skin 中)。
最后我打开 Substrate.csproj 并检查了所有的 ProjectReference Include
条目。其他人都在那里,但没有提到皮肤,即使皮肤确实出现在小项目依赖关系对话框的复选框中。所以项目依赖对话框选择了 Skin 的复选框(并将其保存在某处),但没有改变 Substrate.csproj。然后我手动添加了 ProjectReference Include
,确保我拥有皮肤项目的正确路径和 GUID。
然后我保存了 Substrate.csproj,问题就解决了。所以正如其他人所说,这是VS工具的问题
就我而言,我卸载项目,然后:
打开 myProject.csproj 并将 ToolsVersion="4.0" 更新为 ToolsVersion="12.0"(我正在使用 vs 2017)(使用 Paulus 的答案 https://stackoverflow.com/a/64552201/1594487)。从 myProject.csproj 中删除以下行:
问题解决了。
在我的情况下,我有一个由外部依赖项(xsd2code)构建的文件,并且不知何故它的 Designer.cs 文件没有被 VS 正确处理。在 Visual Studio 中创建一个新文件并将代码粘贴到其中对我来说是诀窍。
对于尝试将网站发布到 Azure 时遇到此错误的任何人,以上看起来很有希望的解决方案都没有帮助我。我在同一条船上 - 我的解决方案本身就很好。我最终不得不
删除我的解决方案中的所有 nuget 包。关闭并重新打开我的解决方案。重新添加所有 nuget 包。
有点痛苦,但这是我可以让我的网站发布到 Azure 的唯一方法。
不定期副业成功案例分享