释放 Assembly.LoadFrom 文件句柄
Posted
技术标签:
【中文标题】释放 Assembly.LoadFrom 文件句柄【英文标题】:release Assembly.LoadFrom file handle 【发布时间】:2010-07-19 13:02:05 【问题描述】:我正在尝试使用以下代码在 C# 中获取 exe 的汇编版本
Assembly asm = Assembly.LoadFrom(address);
return asm.GetName().Version;
它运行良好,但如果我在使用此功能后尝试删除 exe,它会显示“拒绝访问”,因为该 exe 正在被另一个进程使用!
是否有任何 Dispose 调用或释放文件句柄或任何其他解决方案的东西?
【问题讨论】:
How to unload an assembly from the primary AppDomain的可能重复 【参考方案1】:除了卸载应用程序域之外,没有其他方法可以卸载程序集。见How to: Load and Unload Assemblies:
没有办法卸载 无需卸载的单独组装 所有的应用程序域 包含它。使用卸载方法从 AppDomain 卸载应用程序 域。有关详细信息,请参阅 卸载应用程序域。
如果您只想获取文件的版本,请尝试使用FileVersionInfo.GetVersionInfo。
【讨论】:
【参考方案2】:这里已经解决了这个问题
How to unload an assembly from the primary appdomain
【讨论】:
以上是关于释放 Assembly.LoadFrom 文件句柄的主要内容,如果未能解决你的问题,请参考以下文章
如果在 Windows 服务 .net 可执行文件中调用 .NET Assembly.Load/LoadFrom 会失败
ASP.NET:CreateDomain(...).CreateInstanceAndUnwrap(...) 或 Assembly.LoadFrom(...).GetExportedTypes() 抛
Assembly.LoadFrom 在带有 MFC 的 cpp/CLI DLL 上失败,包括
Assembly.LoadFrom加载程序集类型转换失败解决方法