C# 定位的组件';的清单定义与程序集引用不匹配。(来自HRESULT的异常:0x8013100)

C# 定位的组件';的清单定义与程序集引用不匹配。(来自HRESULT的异常:0x8013100),c#,asp.net,asp.net-mvc,visual-studio,nhibernate,C#,Asp.net,Asp.net Mvc,Visual Studio,Nhibernate,在签署第三方程序集并将其添加到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

在签署第三方程序集并将其添加到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软件包时。如果这恰好也是您的情况,我发现解决此问题的最佳方法是右键单击解决方案(而不是单个项目),然后选择“管理Nuget软件包”。然后,在安装的软件包中找到有问题的程序集。您可能会多次看到它被列出。在包的每个旧版本上单击“管理”,然后取消选中所有项目。一次,列表中只保留软件包的最新版本。单击此项上的“管理”,并重新检查需要该包的所有项目。这将本质上升级它们以使用相同版本的软件包,应该可以解决您的不匹配错误。

我也遇到了类似的问题。在我的例子中,我的解决方案中有多个项目


其中一个项目引用了EntityFramework 4.0,而另一个项目引用了EntityFramework 5.0。我同步了它们,问题就解决了。

当我过去遇到这个问题时,我从gac中删除了所有项目的dll,重新构建了解决方案,然后执行了
iisreset
,问题就解决了。

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

在我的例子中,我已经手动更新了程序集的版本

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

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

这解决了我的问题

您的
===预绑定状态信息===
似乎不完整。 通常它显示执行情况,最后一行显示错误,因此,我们只能帮助分享我们的经验。 例子:


我希望其他面临此问题的人会觉得这很有帮助。

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


我使用FASTjson得到这个错误:

\u jsonConfig=fastJSON.JSON.ToObject(jsonConfig文件内容)

这一行失败了:

Type t=Type.GetType(typename)

这会导致System.RuntimeTypeHandle.GetTypeByName中出现异常


问题在于JSON文件与JSON对象模型之间存在差异

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

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

解决此问题的一种方法是,在解决方案资源管理器中右键单击,进入“管理解决方案的NuGet软件包”。 到达后,转到“合并”,找到导致问题的程序包。确保解决方案中的所有项目都使用相同的版本


我有一个不同的原因:在我的例子中,我以前使用过各种nuget软件包版本,并且我有一个
app.config
,出于某种原因,它是用此类内容自动生成的:

  <dependentAssembly>
    <assemblyIdentity name="Microsoft.Extensions.DependencyInjection" publicKeyToken="adb9793829ddae60" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-1.1.1.0" newVersion="1.1.1.0" />
  </dependentAssembly>

所以我只安装了1.1.0.0版,但是由于这个重定向指令,它寻找1.1.1.0版,尽管Visual Studio安装了1.1.0.0版的nuget。将新版本更改为1.1.0.0修复了所有问题:

  <dependentAssembly>
    <assemblyIdentity name="Microsoft.Extensions.DependencyInjection" publicKeyToken="adb9793829ddae60" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-1.1.1.0" newVersion="1.1.0.0" />
  </dependentAssembly>


“在已安装的软件包中找到有问题的程序集”Manage Nuget软件包中未列出或安装任何程序集或程序包。它只提供安装Jquery、Entityframwork等的选项。您已单击左侧的“已安装”链接,对吗?你在列表底部有页码吗?这些错误与你在问题中发布的错误完全不同。这些字面上的意思是你的项目缺少这个组件。只要添加引用就行了。当我在VS中运行时,我收到了以下消息:在浏览器中,消息不同:我用谷歌搜索了问题,延迟签名是选项之一,延迟签名可以解决问题吗