检查组件的版本而不加载它

时间:2013-08-04 14:54:34

标签: c# reflection

我有一个检查程序集版本的方法,如果它已过时会覆盖它。要检测我正在使用以下代码的版本:

version = Type.GetType(typeName).Assembly.GetName().Version;

但是,如果我在尝试覆盖它时认为此版本已过期,则会出现以下错误

  

该进程无法访问该文件...因为它正由另一个进程使用。

在我看来,反映程序集的行为导致它加载到程序中,因此无法覆盖它。

我怎么能

  1. 检查版本而不加载程序集
  2. 在覆盖之前卸载组件

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:2)

按以下方式加载装配体的副本。

var assembly = Assembly.Load(File.ReadAllBytes("YourAssembly.dll"));

您现在可以覆盖磁盘上的程序集。

答案 2 :(得分:0)

考虑使用Mono.Cecil

这是一个优秀的(好的,前罗斯林)CIL组装读写器。