思维的乐趣

Enjoy it
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

DLL跟主程序的关系,IDE内编译时按CTRL+F5时的问题

Posted on 2010-11-16 23:50  szh114  阅读(614)  评论(0编辑  收藏  举报

当主程序中引用了一个DLL时,这个DLL就必须要让主程序能找到才行,

如果找不到时会发生什么情况呢(假设没针对这种情况做任何特殊处理)?

如果这是一个Console程序,那么窗口会一闪而过,如果在CMD下执行,那么什么都不会显示,直接就到新的命令提示符了。

如果这是一个WinForm程序,则会弹出异常窗口。

 

之所以写这个,是因为前天在讲解一个示例程序时,窗口一闪而过,我想了半天,才发现是需要的DLL库没拷过来。。。。所以备记此处!

 

 

另外,今天在实验Effictive C#中讲得关于const 与 readonly的例子,我的做法是先在Soluction下建了一个Class Library 的 Project 然后编译得到了一个DLL,

然后我又在同一个Solution下面新建了一个Windows Console Application做为主程序来使用那个DLL,但是我编译,然后运行发现不管是const还是readonly都

在主程序中改变了值,而不是如书中所说的,readonly型定义的会改变,而const的不会变。然后我想是不是我编译时按的CTRL+SHIFT+B是Rebuild了整个Solution,

导致了主程序也同步重新生成,导致两种值都变了。因此我修改了一下DLL中的两个测试常量的值,然后只在那个PROJECT文件夹上点击了右键,然后选择Rebuild,

这次应该是只编译了DLL吧,可是我再次按CTRL+F5,结果仍然是两个值都变了,然后我去看了一下,原来问题出在CTRL+F5上,该操作导致主程序自动重新编译

了一遍,主程序的生成的时间点变成最近的了,也就是说IDE检测到了所引用的DLL的变化,然后自动编译了主程序。。。。。。

 

然后我再重新编译DLL,然后直接双击运行主程序后,书中提到的const值不会变化,仍保留旧值的问题就复现出来了。。。。。。