我有一个方法可以检查程序集的版本,如果它过时,会覆盖它。要检测我使用以下代码的版本:
version = Type.GetType(typeName).Assembly.GetName().Version;
但是,如果我在尝试覆盖它时认为此版本已过时,则会收到以下错误
该进程无法访问该文件...因为它正在被另一个进程使用。
在我看来,反映程序集的行为导致它加载到程序中,因此它不能被覆盖。
我怎么能
- 在不加载程序集的情况下检查版本
- 在覆盖之前卸载程序集
我有一个方法可以检查程序集的版本,如果它过时,会覆盖它。要检测我使用以下代码的版本:
version = Type.GetType(typeName).Assembly.GetName().Version;
但是,如果我在尝试覆盖它时认为此版本已过时,则会收到以下错误
该进程无法访问该文件...因为它正在被另一个进程使用。
在我看来,反映程序集的行为导致它加载到程序中,因此它不能被覆盖。
我怎么能
您应该只重定向程序集版本。
按以下方式加载程序集的副本。
var assembly = Assembly.Load(File.ReadAllBytes("YourAssembly.dll"));
您现在可以覆盖磁盘上的程序集。