使用MEF和WCF时重写dll文件

时间:2011-03-24 13:47:53

标签: wcf dll assemblies mef overwrite

在我当前的项目中,我正在使用WCF服务向客户端发送dll文件。 dll文件包含客户端用于可视化数据的UserControls。 但是,有时新服务会引入新的UserControl,而客户不知道这一点。发生这种情况时,我将新的dll文件发送给客户端,以便他们拥有最新版本的UserControls。

但是,当我想在客户端HD(使用FileStream)上编写这个新的dll文件时,我得到一个异常,说该文件被另一个进程使用(当然,客户端总是有一个汇编版本的用户控制他们的高清,所以这必须被覆盖)。

有没有办法覆盖这个文件而不会出错?我正在使用MEF来读取客户端项目中的程序集文件。要将程序集文件发送到客户端,我只需将文件名作为字符串发送,将文件的内容发送到字节数组中。

1 个答案:

答案 0 :(得分:2)

这通常是使用Shadow Copying完成的,但我找不到任何关于它是否适用于MEF的确定性。

如果在关闭并重新打开应用程序时加载新控件是可以接受的,那么您可以在编写MEF之前复制所有插件。

这是一个blog post,其中有人主要尝试MEF + Shodow Copy,以及一个特别相关的评论。

  

这里的根本问题是   .NET不支持动态组装   卸货。你可以重装   装配,但你永远不会   恢复旧的使用的内存   一个