【问题标题】:Why can Visual Studio detect which "using" is needed, but then say the type or class which provoked the addition of the reference does not exist?为什么 Visual Studio 可以检测到需要哪个“使用”,然后说引起添加引用的类型或类不存在?
【发布时间】:2013-07-02 18:19:37
【问题描述】:

在尝试构建时,突然间(我从事这个项目几天后)我得到:

“类或命名空间 'OpenNETCF' 中不存在类型或命名空间名称 'IO'(您是否缺少程序集引用?)”

但是当我注释掉那一行时(使用 OpenNETCF.IO.Ports;),我得到:

? OpenNETCF.IO.Ports.Handshake(多选...)?

当我点击它时,有两个选择:

OpenNETCF.IO.Ports.Handshake 
- and:
OpenNETCF.IO.Serial.Handshake

由于本单元中的代码处理打印,我选择“端口”(拒绝“串行”,因为它的阴/阳为“并行”)。所以它然后添加了我抱怨的使用(使用 OpenNETCF.IO.Ports)......然后它又回到了原来的错误消息。

但我的参考文献中确实有几个 OpenNETCF 项目,即:

OpenNETCF
OpenNETCF.Data
OpenNETCF.Drawing
OpenNETCF.Net
OpenNETCF.Phone
OpenNETCF.VisualBasic // I don't know why, this is a C# project
OpenNETCF.Web.Services2
OpenNETCF.Windows.Forms
OpenNETCF.WindowsCE.Forms
OpenNETCF.Xml

什么可能导致这种鸡和蛋的追尾练习感到沮丧?

奇怪的是,我得到“类型或命名空间名称 'Windows' 不存在于类或命名空间 'OpenNETCF' 中(您是否缺少程序集引用?)”使用在另一个 .cs 文件中:

using OpenNETCF.Windows.Forms;

...但是无论如何,使用都显示为未使用,但是当我将其注释掉时,我得到了很多其他错误,据称是因为它已经消失了,例如在这一行:

IntPtr hwnd  = OpenNETCF.Win32.Win32Window.GetCapture();

类或命名空间“OpenNETCF.Win32”中不存在类型或命名空间名称“Win32Window”(您是否缺少程序集引用?)

更新

在“Well Flip My Bits!”的另一集中我刚刚编译,得到那些关于无法将这行代码与已安装和配置的代码相协调的错误消息,等等,向上滚动以查看它应该丢失的“使用”在那里,再次编译,现在它编译得很好。蓝色的火焰是什么?!?!?!?

【问题讨论】:

  • 我不确定这是否会有所不同,但请记住 using(它允许您将 namespaces 导入当前文件/scope) 和 references 是两个不同的东西。引用是您要在当前项目中使用的类型的外部文件/项目的位置,并且始终是必需的。如果没有using,您仍然可以使用当前文件中未定义的类型;你只需要完全限定它:而不是Handshake,你必须输入OpenNETCF.IO.Serial.Handshake。见here

标签: c# visual-studio .net-assembly opennetcf


【解决方案1】:

这听起来像是您在为“客户端配置文件”.net 版本构建项目时看到的问题,同时引用了客户端配置文件中不支持的程序集。

尝试更改项目的构建设置以使用非“客户端配置文件”的 .net 框架版本。

【讨论】:

  • 有谁知道在 Visual Studio 2003 中的哪里,我想看看这是否是问题(以及要寻找什么)?
  • @ClayShannon 如果您使用的是 VS 2003,这意味着您运行的是 .NET 1.1。 IIRC,客户端配置文件仅在 VS 2010 和 .NET 4 中引入。
  • 好的,那它为什么要抱怨呢?
【解决方案2】:

也可以在类内部使用命名空间,因此请考虑将其移到那里,如果有使用两者的类而不是使用OpenNETCF.IO.Ports.Handshake handshake = new OpenNETCF.IO.Ports.Handshake()中的全名

对于使用命名空间的类:

using System;

namespace MyNamespace
{
    using OpenNETCF.IO.Ports;

    //...
}

【讨论】:

  • 这能解决什么问题吗?这样做背后的理论是什么?或者这只是您推荐的重构?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-18
  • 2022-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多