无法加载文件或程序集'Newtonsoft.Json'或其依赖项之一。清单定义与程序集引用不匹配



搜索后尝试的事情:

  1. Web。在旧版本上添加绑定:

    <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.1.0" />
    </dependentAssembly>
    
  2. 编辑我的。csproj文件,确保只有一个Newtonsoft引用

    <Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
       <HintPath>..packagesNewtonsoft.Json.6.0.1libnet45Newtonsoft.Json.dll</HintPath>
       <SpecificVersion>False</SpecificVersion>
       <Private>True</Private>
    </Reference>
    
  3. 在我的电脑上搜索所有的Newtonsoft.Json.dll,删除所有非6.0.1的版本,并删除我的临时文件夹

  4. 在nuget管理器控制台修复/重新安装包

构建成功,但访问站点时出现错误。

编辑

ok,然后我尝试像每个nuget包一样重新安装,它似乎已经添加了4.5版本的newtonsoft.json.dll,但我得到了同样的错误。我的项目的目标框架是。net 4.5.1,这是我现在得到的堆栈跟踪:

'/'应用程序中的服务器错误。

无法加载文件或程序集Newtonsoft.Json或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配。(Exception from HRESULT: 0x80131040)

描述:当前web请求执行过程中出现未处理的异常。请查看堆栈跟踪以获得有关错误及其在代码中的起源位置的更多信息。

异常详细信息:System.IO.FileLoadException:无法加载文件或程序集Newtonsoft.Json或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配。(Exception from HRESULT: 0x80131040)

源错误:

在执行当前web请求期间生成了一个未处理的异常。有关异常的来源和位置的信息可以使用下面的异常堆栈跟踪来识别。

程序集加载跟踪:以下信息有助于确定程序集Newtonsoft.Json无法加载的原因。

=== Pre-bind state information ===
LOG: DisplayName = Newtonsoft.Json
(Partial)
WRN: Partial binding information was supplied for an assembly:
WRN: Assembly Name: Newtonsoft.Json | Domain ID: 2
WRN: A partial bind occurs when only part of the assembly display name is provided.
WRN: This might result in the binder loading an incorrect assembly.
WRN: It is recommended to provide a fully specified textual identity for the assembly,
WRN: that consists of the simple name, version, culture, and public key token.
WRN: See whitepaper http://go.microsoft.com/fwlink/?LinkId=109270 for more information and common solutions to this issue.
LOG: Appbase = file:///c:/users/user/documents/visual studio 2013/Projects/foo/bar/
LOG: Initial PrivatePath = c:usersuserdocumentsvisual studio 2013Projectsfoobarbin
Calling assembly : (Unknown).
 ===
LOG: This bind starts in default load context.
LOG: Using application configuration file: c:usersuserdocumentsvisual studio 2013Projectsfoobarweb.config
LOG: Using host configuration file: C:UsersuserDocumentsIISExpressconfigaspnet.config
LOG: Using machine configuration file from C:WindowsMicrosoft.NETFrameworkv4.0.30319configmachine.config.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Attempting download of new URL file:///C:/Users/user/AppData/Local/Temp/1/Temporary ASP.NET Files/root/48686d37/9d7a6572/Newtonsoft.Json.DLL.
LOG: Attempting download of new URL file:///C:/Users/user/AppData/Local/Temp/1/Temporary ASP.NET Files/root/48686d37/9d7a6572/Newtonsoft.Json/Newtonsoft.Json.DLL.
LOG: Attempting download of new URL file:///c:/users/user/documents/visual studio 2013/Projects/foo/bar/bin/Newtonsoft.Json.DLL.
LOG: Using application configuration file: c:usersuserdocumentsvisual studio 2013Projectsfoobarweb.config
LOG: Using host configuration file: C:UsersuserDocumentsIISExpressconfigaspnet.config
LOG: Using machine configuration file from C:WindowsMicrosoft.NETFrameworkv4.0.30319configmachine.config.
LOG: Redirect found in application configuration file: 4.5.0.0 redirected to 6.0.1.0.
LOG: Post-policy reference: Newtonsoft.Json, Version=6.0.1.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed
LOG: Attempting download of new URL file:///C:/Users/user/AppData/Local/Temp/1/Temporary ASP.NET Files/root/48686d37/9d7a6572/Newtonsoft.Json.DLL.
LOG: Attempting download of new URL file:///C:/Users/user/AppData/Local/Temp/1/Temporary ASP.NET Files/root/48686d37/9d7a6572/Newtonsoft.Json/Newtonsoft.Json.DLL.
LOG: Attempting download of new URL file:///c:/users/user/documents/visual studio 2013/Projects/foo/bar/bin/Newtonsoft.Json.DLL.
WRN: Comparing the assembly name resulted in the mismatch: Major Version
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.

堆栈跟踪:

[FileLoadException: Could not load file or assembly 'Newtonsoft.Json' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]
[FileLoadException: Could not load file or assembly 'Newtonsoft.Json, Version=6.0.1.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]
       System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0
       System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +34
       System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +152
       System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection) +77
       System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +16
       System.Reflection.Assembly.Load(String assemblyString) +28
       System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +38
[ConfigurationErrorsException: Could not load file or assembly 'Newtonsoft.Json, Version=6.0.1.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]
       System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +752
       System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +218
       System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai) +130
        System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +170
       System.Web.Compilation.BuildManager.GetPreStartInitMethodsFromReferencedAssemblies() +91
       System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath, Boolean& isRefAssemblyLoaded) +285
       System.Web.Compilation.BuildManager.ExecutePreAppStart() +153
       System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +516
[HttpException (0x80004005): Could not load file or assembly 'Newtonsoft.Json, Version=6.0.1.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]
       System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9913572
       System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +101
       System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +254
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.18408

为了解决这个问题,我通过运行以下命令并检查结果来确保所有项目使用相同的版本:

update-package Newtonsoft.Json -reinstall

最后,我从web.config中删除了以下内容:

  <dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
  </dependentAssembly>

如果你想确保你所有的Newtonsoft。Json包是相同的版本,你可以这样指定版本:

update-package Newtonsoft.Json -version 6.0.0 -reinstall

注意:要在Visual Studio中打开PMC,请单击Tools ->Nuget Package Manager ->包管理器控制台。谢谢@Rose !

我使用Newtonsoft。Json v6.0.3,但这是我必须在我的Web中做的。配置文件:

<dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="6.0.0.0" />
</dependentAssembly>

注意,即使我使用的是6.0.3,我也必须输入newVersion="6.0.0.0"

在我的包里。配置文件:

<package id="Newtonsoft.Json" version="6.0.3" targetFramework="net45" />

在确保我的计算机在所有位置都有相同的版本并且我的项目都指向相同的参考路径之后,我尝试了以下操作。我还确保旧版本的绑定是他们的,并且绑定到我拥有的当前版本的dll。

我在一个有着严格框架的环境中工作,框架团队经常用不同的dll来打乱版本控制。

我如何解决这个问题是在visual studio(2013)中运行包管理器控制台。在这里,我运行了以下命令:

update-package Newtonsoft.Json -reinstall

后接

update-package Newtonsoft.Json

这检查并更新了我所有的配置文件和相关的项目文件。将它们都强制为同一版本的dll。它最初是4.5版本,然后再次更新以获得最新版本。

我有同样的错误消息,就像你提到的,这是由于不同版本的Newtonsoft.Json.dll被引用。

我的MVC解决方案中的一些项目使用了NuGet包的版本4的dll。

然后我添加了一个NuGet包(在我的案例中是针对Salesforce的),它带来了Newtonsoft。Json版本6,将其作为一个项目的依赖项。这就是触发我的问题的原因。

为了清理,我在解决方案的NuGet包管理器中使用了Updates部分(关闭Tools菜单或右键单击解决方案)来更新Json。. Net包在整个解决方案中,因此对于所有项目都是相同的版本。

之后,我只是检查了应用配置文件,以确保任何绑定重定向行都将转到我选择的版本,如下所示。

<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />

好的,我想我现在可以工作了。我删除了我机器上所有不是我能找到的最新版本的Newtonsoft.Json.dll,确保我在NuGet中有最新的版本,并构建它,并确保它是bin文件夹中的最新版本,我把更改留在了web上。配置文件和.csproj. Config文件。现在我看到另一个错误,所以它必须工作…

经过几个小时的努力…我做了以下操作:

web . config

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
      <bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
    </dependentAssembly>
    <!-- other assemblies... -->
  </assemblyBinding>
</runtime>

输入正确的newVersion和oldVersion号的关键是打开项目的References,找到包,进入其属性或单击alt + enter

你会发现Version部分,在我的情况下是12.0.0.0,而实际上是12.0.3,当探索管理NuGet。

所以你需要从引用属性(在我的例子中是12.0.0.0)中选择包的版本

最后,cleanrebuild的项目(你可能想要删除binobj文件夹之前)。

你可能会遇到其他包的依赖问题,我为所有的包都做了,它们都工作了。

通过在我的网页上注释这一部分。Config solved my problem:

<dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>

当然,你需要确保你已经更新了,或者你有正确的版本,在你的包管理器控制台中这样做:

update-package Newtonsoft.Json -reinstall

您可以通过在web中添加以下行来解决此问题。配置文件。

 <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

在我的情况下,这只是一个问题:

Tools -> NuGet Package Manager -> Package Manager Settings -> Clear Cache

这个问题是在我重新映射一个TFS文件夹时引起的。

我尝试过Oleg的步骤,它们对我的情况很有效。

步骤:

  1. 在Package Manager中运行update-package Newtonsoft.Json -reinstall .

  2. 通过启用查看隐藏文件和删除bin文件夹来删除您的bin

  3. 现在再次运行您的项目。我相信应该没问题!

from Tools>>NuGet Package Manager>>Manage Package for solution更新Newtonsoft。

真正帮助我的是关闭Resharper build并在我的项目上使用VisualStudio Re-Build选项。

如果你正在使用某种subversion:删除项目并重新下载它,它为我工作:S

我在一个参考MVC 5项目的测试项目上遇到了同样的问题。这发生在我与MVC 5项目合并之后。我通过安装Visual studio 2012更新来修复它,正如Andre的回复中所解释的那样。

  • 在您的visual studio中转到
    1. 工具>扩展和更新
    2. 在左侧的手风琴列表中选择"Updates"。
    3. 选择"产品更新"。
    4. 更新到最新版本

我不知道为什么,但在我的情况下,即使我从项目中删除bin文件夹,当我构建项目时,它复制旧版本的newtonsoft。json,我从包文件夹中复制了新版本的dll,它现在解决了。

如果这些都不适用,请检查以下答案:

https://stackoverflow.com/a/12011221/150370

(TL;DR:从配置文件中的configuration标签中删除xml命名空间。否则绑定重定向将被忽略)

在某些情况下,如果您删除您的BinObj文件夹将解决此问题。

好了,所以我想要做的就是把我的答案添加到这个长列表中,而不是创建一个重复的问题…

如果你在2019年得到这个,使用。net Core 3.0(此时预览),解决方案是确保所有项目都针对相同的。net Core版本(在我的情况下是3.0)。我想我在解决方案中有一个项目的目标是2.1,其余的是2.2,所以我可能会坚持2.2…

我甚至没有牛顿软件。在任何项目中安装Json,自然地将其添加到它们中并不能解决问题。

如果你的解决方案中有。net标准类库或w/e,它们不需要在同一个版本上,尽管它们可能应该是你能去的最新版本。例如,我的。net标准类库是在2.2上,因为还没有。net标准3.0。

所有答案,包括选中的那个都不适合我。

解决方案要简单得多。我首先从我的总线层中删除了引用。然后从项目中删除dll(以确保它已经消失),然后重新安装JSON。. NET从nuget包。而最棘手的部分是,"把它关掉再打开"。

我刚刚重启了visual studio,它工作了!

所以,如果你尝试了所有可能的方法,仍然不能解决问题,只要试着把visual studio关闭再打开,它可能会有所帮助。

我通过在bin文件夹中删除较低版本的Newtonsoft.json.dll来解决它,并添加了Newtonsoft.json.dll V6.0.0.0并删除了以下web。配置元素

<dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed"/>
    <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="5.0.8"/>
</dependentAssembly>

我得到了同样的问题与dotnet核心,并设法通过清除NuGet缓存来修复它。

打开powershell,输入如下命令:

dotnet nuget locals all --clear

然后我关闭Visual Studio,再次打开它,并在包管理器控制台输入以下命令:

Update-Package

NuGet现在应该恢复所有包并再次填充NuGet缓存。

之后,我能够在Linux容器中构建和启动我的。net core webapi。

解决这个问题的方法是

转到参考文献->右键单击Newtonsoft。Json——转到属性并检查版本

相同的版本应该在

<dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-YourDllVersion" newVersion="YourDllVersion" />
</dependentAssembly>

步骤简单。(1)运行"update-package Newtonsoft"。

(2)通过启用查看隐藏文件和删除bin文件夹来删除您的bin。

(3)关闭visual studio并重新打开。

(4)现在再次运行您的项目。我相信它应该是好的

我遇到这个问题,因为我有:项目A(桌面。exe)引用项目B(便携式。dll)。一个,B有不同版本的JSON。Net,所以有一个加载器冲突。一旦我使所有版本的JSON.net都相同,它就工作了。

我最近在一个老项目中遇到了这个问题。

在检查了实际在bin文件夹中的dll的版本后,我设法跟踪了这个问题。

我有一个后构建脚本,将依赖程序集从dll库文件夹复制到bin文件夹。nuget出现之前的常见设置。

所以每次我构建后构建脚本用旧版本替换Json.net的正确版本

我有完全相同的问题和Visual Studio 13默认库对我来说是4.5,所以我有2个解决方案一个是在webconfig文件中去掉对这个的引用。这是最后的手段,而且确实有效。

错误信息指出在这个位置/Projects/foo/bar/bin/Newtonsoft.Json.DLL有一个问题。DLL在哪里!一个基本的属性检查告诉我它是4.5.0.0或类似的,所以我改变了webconfig查找4.5并使用4.5。

这些选择都不适合我,但最终还是成功了;

测试>测试设置> *.testrunconfig

我必须添加一个新行

<DeploymentItem filename="packagesNewtonsoft.Json.4.5.8libnet40Newtonsoft.Json.dll" />

确保路径和版本对您的设置是正确的。

这个问题并没有通过刷新NuGet包或在项目上执行"清理"来解决。通过手动清除"obj"文件夹解决了这个问题。

这是我对这个问题的解决方案,确保appconfig或packageconfig中的版本号与参考文献中的参考版本相同。查看这里

在我的情况下,在错误的消息是"版本6.0.0",但这个版本是不可安装的,所以我安装了"6.0.1版本"在我的项目,解决了我的问题。

install-package Newtonsoft.Json -Version 6.0.1 -Project MyProjectX

相关内容

  • 没有找到相关文章

最新更新