15

在签署第三方程序集并将它们添加到 GAC 后,我收到以下错误:Assembly Binder Log Entry 也显示此错误

它说不匹配的程序集不确定在我删除所有 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.
4

8 回答 8

31

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

于 2013-05-07T19:41:46.773 回答
5

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

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

于 2013-07-24T19:37:20.117 回答
3

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

就我而言,我已经手动更新了程序集的版本。

错误信息

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

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

DLL 的属性

这解决了我的问题。

你的=== Pre-bind state information ===似乎不完整。一般显示执行,最后一行显示错误,所以,我们只能帮助分享我们的经验。例子: LOG 信息的最后一行

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

于 2014-06-11T18:14:05.047 回答
2

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

web.config 截图

于 2016-08-29T21:44:50.493 回答
1

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

于 2014-02-13T15:00:42.733 回答
1

我有一个不同的原因:就我而言,我以前使用过各种 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 版本,但是由于这个重定向指令,即使 Visual Studio 安装了 1.1.0.0 的 nuget,它也会寻找 1.1.1.0。将 newVersion 更改为 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>
于 2017-12-08T07:43:18.253 回答
1

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

在此处输入图像描述

于 2017-02-08T18:17:30.713 回答
0

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

_jsonConfig = fastJSON.JSON.ToObject<jsonConfig>(jsonConfigFileContents);

它在这条线上失败了:

Type t = Type.GetType(typename);

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


问题在于 JSON 文件与 JSON 对象模型相比存在差异。

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

string jsonSettings = fastJSON.JSON.ToJSON(JSONObjectModel);
File.WriteAllText(JSONFilePath, jsonSettings);
于 2016-11-08T23:46:54.187 回答