1、错误提示
对于没有涉及到类库或只在一个项目中中编写程序时,我们一般并不会遇到“未能找到类型或命名空间名称”的提示。因为函数之间都在一个项目中,可以相互查询到。
但当学会利用类库写程序时,那么类库之间的调用就很容易出现这样的提示。我在观察百度不同的答疑者提供了不同的方法,但是很遗憾都没有很好的解决我的问题。
2、bug现象
比如在上图中,我编写了一个程序,其中包括4个类库,一个主程序,当然主程序也可以认为是一个类库(个人以为)。其中相互之间存在这样的关系:“图切剖面自动绘制系统”需要引用“FileOp”、“FormSet”、“SectionMap”三个类库,“FormSet”需要引用“SectionMap”、“DataReadAndWrite”两个类库。
在类库的引用之前往往需要重新生成解决方案,这样才会在内存中出现.dll后缀名的文件,然后引用各个类库(如果不能引用,往往是类库中的类或函数没有添加public修饰符),编写程序后,务必要“重新生成”。”
如果下方的“错误列表”中出现如下提示,那么恭喜你程序已经运行成功。
在“重新生成”这一步往往会出现“未能找到类型或命名空间名称”,如果类库之间相互不存在引用,那么你无论重新生成那一个类库都不会出现什么问题,除非程序本身错误,所以程序往往不会提示这个消息。
3、bug分析
上诉的bug往往是因为类库之间存在调用,比如前面我的程序就出现相互调用,那么这个时候重新生成的顺序就比较重要了。如果我先生成“图切剖面自动绘制系统”,往往就会提示“未能找到类型或命名空间名称”,因为“FileOp”、“FormSet”、“SectionMap”三个类库是引用的,应该提前生成,不然怎么知道类库有没有修改那。
4、bug解决
如果我们知道引用的顺序,那我们完全可以按照顺序一个一个生成,但是当程序很多,类库之间的引用很复杂就不适用了。经过我的探索,找到了解决的方法。当然也许很多人已经知道了,个人小白,受他人启发解决问题。
(1)右击 解决方案,找到项目依赖项并打开
(2)在窗口中我们可以看到我们可以为每个项目指定依赖项,也就是你引用的类库,不要多选也不要少选。
(3)打开生成顺序,我们可以检查是否正确,被引用类库在前,引用类库在后,如果二者相互调用你就需要反思一下了。
(4)最后我们只需要重新生成最后的那个主程序的类库即可,错误列表如果有下图提示,恭喜你,程序将不会在提示“未能找到类型或命名空间名称”了。
5、例外bug
由于小白我是编写arcgis engine程序,有的时候按照上面的操作还会出现上述提示,是因为arcgis engine某些函数要求必须以管理员运行程序才行,但是平常编写程序应该不需要。
6、结语
希望这篇文章可以对大家编写程序有提示作用,也欢迎大家在下面留言遇到的问题,相互分享去解决问题,成为一名合格的程序员。