怎样使"Hosting"和"Client"共用“Dll”。WCF的服务器端"Hosting"和客户端"Client",共用“DLL(Contracts.dll)”。在WCF的服务器端"Hosting"正在运行。客户端"Client"运行调试,提示错误信息:错误 1 无法将文件“C:\Users\Administrator\Desktop\Test\WCFDemo\Contracts\bin\Debug\Contracts.dll”复制到“bin\Debug\Contracts.dll”。
文件“bin\Debug\Contracts.dll”正由另一进程使用,因此该进程无法访问此文件。 Hosting这是怎么回事呢?应该怎样修正???

解决方案 »

  1.   

    如果运行“Debug”文件夹下,“客户端"Client"”的应用程序是没有问题的。
      

  2.   

    DEBUG时可以设定多个启动项和顺序。
      

  3.   

    如果客户端程序没有修改Contracts.dll,修改项目的输出路径,改成不是bin\Debug就可以了。或者自己定义postbuild事件,随便做些什么,好像就不会自动拷贝文件了
      

  4.   

    你是不是吧host和client的output都定位到同一个路径下了?
    简单的解决方法就是debug目录中启动client.再在vs中debug->Attach to processes, attach到client的进程上。
    这要就可以调试了。
      

  5.   


    host和client的output都定位到同一个路径下了?没有啊,它们在不同的文件夹下
      

  6.   

    是因为点Debug的时候会进行build。因Client在含义上不具有修改这个公用Dll的意义,所以可以在Client这边的选项中将debug的build工程列表中已经勾选的Contracts工程去掉。结构上也正确了,你的问题也能解决。
      

  7.   

    当你的"Hosting"和"Client"同时存在于一个解决方案的时候才可能出现的问题,直接F5默认是编译解决方案下面的所有文件,包括Hosting项目,虽然你那时没改动Hosting项目,但是他检测到Hosting项目所引用的其它项目(依赖性检测)有改动,因此还是会傻瓜化的多执行一次Hosting的编译,但是你Hosting却开着,因此报错。解决方法很简单,就是对解决方案右键点属性,里面的最后一项配置属性里,把所有除了Client以为的项目勾选都去掉,其它项目由于本身不需要F5调试,因此必要的时候单独对项目右键编译,不要随着F5的调试一起编译,这样速度还能快很多。
      

  8.   

    调试好像是要把DLL与执行文件放到同一个目录下面吧....
      

  9.   


    直接点击“启动调试F5”,运行项目。这个过程中对整个解决方案进行编译的。Ctrl+F5,就可以对解决方案下制定的项目进行编译运行,而不会编译其它的同“解决方案”下的项目吗???