Ahm*_*aid 5 c# fileloadexception building .net-3.5
我有一个带有很多dll的.net 3.5应用程序,我试图在不构建整个应用程序的情况下重建特定的dll,但在用new替换旧的应用程序后,应用程序抛出异常,因为它无法加载新的dll异常:System.IO .FileLoadException:无法加载文件或程序集....我理解它搜索具有特定版本和公共令牌的程序集,如何在不重新构建应用程序的情况下解决此问题?该申请已签署但未在GAC注册.PS:我怎样才能再次跳过构建应用程序,或者必须重新构建dll?
您收到错误的原因是您的程序集已签名,并且很可能您对它的引用将Specific Version属性设置为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)
Run Code Online (Sandbox Code Playgroud)
但是,如果被引用的程序集不再是1.0.0.0(或者任何版本,例如),则编译后的版本.在下图(beit small)中,您可以看到引用属性正在查找版本1.0.0.0,特定版本设置为True,并且引用程序集已签名,实际上是2.0.0.0版本,从而导致FileLoadException.
通过更改版本号并重新编译,或将特定版本设置为False并仅重建该DLL来解决此问题.您不必重建整个应用程序.
