问题描述
用MonoDevelop(版本4.0.1)做一个项目,要读写串口,但是第一步就卡住了,打死找不到System.IO.Ports,提示:Thetypeornamespacename`Ports'doesnotexistinthenamespace`System.IO'.Areyoumissinganassemblyreference?但是usingSystem.IO;usingSystem.IO.Compression;这些都可以,为什么就是Ports找不到呢(Pipes也找不到),检查CSharp的Assembly“References”列表里面也有“System“,展开也能看到"System.IO.Ports",编辑器也能自动补齐System.IO.Ports,为什么还是说没assemblyreference。而且不都是在System.Dll里面吗,太奇怪了用Framework3.5里面System.Core,有System.IO.Pipes没有System.IO.Ports,但是usingSystem.IO.Pipes说找不到,用Framework2.0里面System,有System.IO.Ports没有System.IO.Pipes,但是usingSystem.IO.Ports说找不到,疯了整个程序代码很简单,如下:usingSystem;usingSystem.IO;usingSystem.IO.Ports;//这行通不过,去了就好了publicclassTestPorts{}
解决方案
解决方案二:
你用的.netframework是哪个版本,应该有这个,
解决方案三:
我用的是3.5
解决方案四:
3.5和2.0都用过了,3.5里面没有IO.Ports,按理说应该有吧,难道想用串口只有用2.0版本?没做过串口哈,不太懂
解决方案五:
我理解你的痛苦,你懂,兄弟忍着,按我说的方法再试试看行不行。左键单击项目下的Reference,找到System.左键双击System.这时会打开ObjectBrowser窗口,现在可以通过这个ObjectBrowser窗口清楚的看到System是引用的哪里的System.dll,还可以看下面到底有没有System.IO.Ports如果没有那就是没有,见下图原因可能是引用的System.dll有问题,那就要换个版本的dll,也可能是你引用的其它dll里也有Ports这个对象,导致重叠,系统无法确定是哪个,所以找不到,这样的话你要用带名字空间去访问以上建议,请参考。
解决方案六:
解决方案七:
如果两个dll有相同的对象,就用全命名空间访问,如果它们的命名空间名也一样,那可能只有干掉其中的一个dll引用了吧
解决方案八:
你用的是mono项目的dll吧?可能没有实现这个类,换个版本看看
解决方案九:
看起来应该有啊。这里有讨论:但是好像在不同平台支持的上支持的并不是完美。
解决方案十:
楼主您好,请问这个问题你解决了吗?我现在也遇到这个问题四处寻医也没有解决,希望您看到回复后能告诉我一声
解决方案十一:
如果真的没有,要么换框架版本,要么用开源的
解决方案十二:
调用API试过吗?就是kernel32