gpt4 book ai didi

c# - 如何不使用 Assembly.Load 锁定两个文件

转载 作者:行者123 更新时间:2023-11-30 17:14:14 24 4
gpt4 key购买 nike

如果我复制一个文件

File.Copy(src, dst);

然后加载副本

var asm = Assembly.LoadFile(dst);

为什么两个文件都被我的进程锁定了?

如果我在加载 dst 之前删除 src,然后将 dst 重新复制回 src,我会得到我想要的最终结果。但是delete和copy好像有点多余。

File.Copy(src, dst);
File.Delete(src);
var asm = Assembly.LoadFrom(dst);
File.Copy(dst, src);

是的,我正在构建一个插件设计应用程序。是的,我可以将 AppDomains 与 Shadow Copy (http://msdn.microsoft.com/en-us/library/ms404279.aspx) 一起使用。是的,我将不得不管理我自己的类型缓存(因为就我的 AppDomain 而言,每个程序集加载都会提供不同的类型)。但这些不是我问题的答案。

注意 src 和 dst 是字符串。文件上没有打开其他流。

最佳答案

源文件可能位于您的应用程序的程序集解析路径中,因此会自动加载。尝试创建 src C:\Temp 或与您的应用程序文件夹无关的其他路径,看看是否会发生同样的事情。

关于c# - 如何不使用 Assembly.Load 锁定两个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8995048/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com