gpt4 book ai didi

c# - FileVersionInfo.GetVersionInfo 显示替换文件的错误版本

转载 作者:太空宇宙 更新时间:2023-11-03 18:38:14 24 4
gpt4 key购买 nike

为什么当加载 .NET DLL、从另一个应用程序域替换(DLL 更新为新版本),然后重新加载(使用 Assembly.LoadFrom)版本信息仍然反射(reflect)旧版本?

assembly.GetCustomAttributes(typeof(AssemblyFileVersionAttribute), false)assembly.GetCustomAttributes(typeof(AssemblyVersionAttribute), false) 也是如此。

这是正常行为吗?不过,如果我在资源管理器中检查文件,我会看到正确的版本。

有什么办法可以得到DLL的实际版本?

最佳答案

虽然不是很清楚,但“重新加载”一词是您所看到内容的有力指标。 CLR 不允许使用 Assembly.LoadFrom() 重新加载同一程序集的不同版本。这是一个强大的 DLL Hell 反制措施,可以避免许多讨厌的运行时异常。特别是说“无法将 Foo 转换为 Foo”的 InvalidCastExceptions。 .NET 中的类型标识包括程序集的 [AssemblyVersion]。调用 Assembly.LoadFrom() 只会返回对先前加载的程序集的引用。

也没有办法从 AppDomain 中卸载程序集。您唯一能做的就是创建一个 AppDomain。

我不应该提到 Assembly.LoadFile(),它不执行此检查,那是主要的痛苦。

关于c# - FileVersionInfo.GetVersionInfo 显示替换文件的错误版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12076167/

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