定位的程序集的清单定义与程序集引用不匹配。 (HRESULTexception:0x80131040)

签署第三方程序集并将其添加到GAC后,我收到以下错误:程序集绑定程序日志条目也显示此错误

它说不匹配的程序集不确定如何删除所有obj和bin折叠和批量构建应用程序+重新导入dll。

Assembly manager loaded from: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll Running under executable C:\Program Files (x86)\Common Files\Microsoft Shared\DevServer\11.0\WebDev.WebServer40.exe --- A detailed error log follows. === Pre-bind state information === LOG: User = AKBARCA\user LOG: DisplayName = ClubStarterKit.Core, Version=3.0.1.0, Culture=neutral, PublicKeyToken=null (Fully-specified) LOG: Appbase = file:///C:/Users/user/Desktop/NhibernateMediumTrust/NhibernateMediumUpgrade/direct/clubstar terkit v3 preview/ClubStarterKit.Web/ LOG: DEVPATH = C:\ProgramData\Red Gate\.NET Reflector\DevPath LOG: Initial PrivatePath = C:\Users\user\Desktop\NhibernateMediumTrust\NhibernateMediumUpgrade\direct\clubstarterkit v3 preview\ClubStarterKit.Web\bin Calling assembly : ClubStarterKit.Web, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null. 

根据我的经验,这种情况会发生,通常是在您发布应用程序之后以及当您使用不同版本的nuget软件包时。 如果这恰好也是你的情况,我发现修复它的最好方法是右键单击解决方案 (而不是单个项目)并选择“Manage Nuget Packages”。 然后,在已安装的软件包中找到有问题的程序集。 您可能会多次列出它。 在每个旧版本的软件包上单击“管理”,然后取消选中所有项目。 一旦只有最新版本的包仍然在列表中。 单击此处的“管理”,然后重新检查需要该程序包的所有项目。 这将基本上将它们全部升级为使用相同版本的软件包,并应解决您的不匹配错误。

我遇到了类似的问题。 就我而言,我的解决方案中有多个项目。

其中一个项目是引用EntityFramework 4.0,该项目在另一个引用EntityFramework 5.0的项目中被引用。 我带他们同步,问题就消失了。

嗯……我遇到了类似的错误信息。

在我的情况下,我已手动更新程序集的版本。

错误消息

在引用的程序集中,我有另一个版本……

所以,我在web.config中更新了它。

DLL的功能

这解决了我的问题。

您的=== Pre-bind state information ===似乎不完整。 通常它显示执行,最后一行显示错误,因此,我们只能帮助分享我们的经验。 例: LOG信息的最后一行

我希望遇到这个问题的其他人觉得这很有帮助。

在我的情况下,当依赖程序集的web.config的中指定的版本(例如Newtonsoft.Json)与bin文件夹中实际的版本不匹配时,会发生错误。 更新web.config中的版本号后,问题就解决了。

web.config的截图

当我在过去遇到这个问题时,我从gac中删除了所有项目的dll,重建了解决方案,然后做了iisreset并且它已经解决了。

我使用FASTjson得到了这个错误:

_jsonConfig = fastJSON.JSON.ToObject(jsonConfigFileContents);

它失败了:

Type t = Type.GetType(typename);

这导致System.RuntimeTypeHandle.GetTypeByName中的exception


与JSON对象模型相比,问题是JSON文件的差异。

解决方案是将JSON对象模型重新保存到文件,例如:

 string jsonSettings = fastJSON.JSON.ToJSON(JSONObjectModel); File.WriteAllText(JSONFilePath, jsonSettings); 

解决这个问题的一种方法是,在解决方案资源管理器中右键单击“管理解决方案的NuGet包”。 在那里,转到“合并”并找到导致问题的包。 确保解决方案中的所有项目都使用相同的版本。

在此处输入图像描述

我有一个不同的原因:在我的情况下,我之前使用过各种nuget包版本,并且我有一个app.config由于某种原因已经使用这种内容自动生成:

      

所以我只安装了版本1.1.0.0,但由于这个重定向指令,它查找了1.1.1.0,即使Visual Studio安装了1.1.0.0的nuget。 将newVersion更改为1.1.0.0修复了所有内容: