gpt4 book ai didi

c# - 使用新的 .net dll 更新应用程序会给我 FileLoadException?

转载 作者:太空狗 更新时间:2023-10-29 23:02:43 27 4
gpt4 key购买 nike

我有一个包含许多 dll 的 .net 3.5 应用程序,我试图在不构建整个应用程序的情况下重建特定的 dll,但是在用新的替换旧的之后,应用程序抛出异常,因为它无法加载新的 dll异常(exception):System.IO.FileLoadException:无法加载文件或程序集....我知道它搜索具有特定版本和公共(public) token 的程序集,如何在不重新构建应用程序的情况下解决这个问题?该应用程序也已签署但未在 GAC 中注册。附言:我怎样才能跳过再次构建应用程序,或者它是必须的,因为 dll 是重建的?

最佳答案

您收到错误的原因是因为您的程序集已签名,并且您对它的引用很可能将特定版本属性设置为 True,并且您对其进行更改的程序集的版本号已更改。我尝试了很多方案,这是我能够获得 FileLoadException 的唯一方案。如果您已将 Target Framework 更改为较新的版本,如 4.0,您将得到 BadImageFormatException。即使您说您没有更改版本号,无论如何也要检查它,或者通过选择您的引用并将特定版本设置为 False,然后右键单击并选择属性。

您的异常可能如下所示:

Could not load file or assembly 'LoadedAssembly, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=889080b75eb3bad2' or one of its dependencies. The located assembly's manifest
definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

但如果被引用的程序集不再是 1.0.0.0(或任何版本,例如),则您的编译版本。在下图中(很小),您可以看到引用属性正在寻找版本 1.0.0.0,特定版本设置为 True,并且引用程序集已签名并且实际上是版本 2.0.0.0,因此导致 FileLoadException。

通过改回版本号并重新编译,或将特定版本设置为 False 并仅重建该 DLL 来解决此问题。您不必重建整个应用程序。

enter image description here

关于c# - 使用新的 .net dll 更新应用程序会给我 FileLoadException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6454382/

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