在我的程序里,需要引用一个动态库才能编译成功,但是在程序下一次编译的时候也需要同时重新生成一下那个已经被引用的dll,这时编译程序就会报错,说“一个程序正在引用这个dll”,请问各位大侠这种情况怎么解决啊???十分感谢!!!

解决方案 »

  1.   

    是这种情况,在编译前就有这个dll了,但是在编译程序的时候呢也想在重新编译一下这个dll.
      

  2.   

    “一个程序正在引用这个dll”  提示不是很明显么· 有程序占用着 你引用的 dll,把你调试的程序关掉就OK 了· 
      

  3.   

    kukaco:十需分感谢您这么晚了还能回复我的问题。可能是我说的不太清楚。是这种情况:我的这个程序中有个函数,这个函数的参数的类型是这个动态库里的一个枚举类型,所以我在第一次编译这个程序之前必须先编译出来这个dll,然后引用到我的程序里,但是dll里的这个枚举类型的元素是从一个配置表里读出的,所以这个枚举类型的元素可能会有所变化,所以以后每次运行这个程序我需要重新编译一下这个dll,这样程序里的枚举类型才能得到最新的枚举元素。但是,运行程序又不能每次都手动去引用dll.所以,还请大侠多多指点!谢谢!
      

  4.   

    我晕···你这个有点诡异,按你的说法:是在编译的过程中,编译器(.net)帮你把枚举类型 从配置表加载进来?????这个是不可能的··· 编译器本事只负责把Code编译成 可执行文件(dll), 绝对不会参与到你的程序加载或其他逻辑····在运行时,你说的 配置加载为枚举 可以 通过放射来实现。我认为还是 你没有找到问题的根本····
      

  5.   

    看看菜单上 的 (VS2008) 项目-> 项目依赖项...
      

  6.   

    用 Unlocker 这个软件应该能解决你的问题
      

  7.   


    楼主对程序、对计算机的理解需要加强
    但是dll里的这个枚举类型的元素是从一个配置表里读出的,所以这个枚举类型的元素可能会有所变化
    -------------------------------------------------------------------------------
    记事本为何能打开不同的文件?或者很多软件都有配置文件,但并没有需要重新编译的说法这个是最基本的理解问题
      

  8.   

    不大明白你的问题。
    是否是因为Assembly.LoadFrom方法加载dll后造成的。
    如果是可以用AppDomain.CreateDomain新建应用程序域,使用完dll后unload应用程序域就可以了