3

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

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

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

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

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

我怎么能

  1. 在不加载程序集的情况下检查版本
  2. 在覆盖之前卸载程序集
4

3 回答 3

2

您应该只重定向程序集版本

于 2013-08-04T14:56:19.813 回答
2

按以下方式加载程序集的副本。

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

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

于 2013-08-04T15:00:05.700 回答
0

考虑使用 Mono.Cecil

这是一个优秀的(好吧,在 Roslyn 之前)CIL 程序集读/写器。

于 2013-08-04T15:08:07.173 回答