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

search后尝试过的东西:

1)在Web.Config中对旧版本进行绑定:

<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文件,以确保只有一个牛顿软引用

 <Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> <HintPath>..\packages\Newtonsoft.Json.6.0.1\lib\net45\Newtonsoft.Json.dll</HintPath> <SpecificVersion>False</SpecificVersion> <Private>True</Private> </Reference> 

3)在我的计算机上search每个Newtonsoft.Json.dll并删除每个非6.0.1版本并删除我的临时文件夹的内容

4)在nuget manager控制台中修复/重新安装软件包

它成功的build设,但得到错误,当去到网站。

编辑

好吧,然后我试图重新安装像每个nuget包,它似乎已经加回到4.5版本的newtonsoft.json.dll,但我得到相同的错误。 我的项目的目标freamework是.NET 4.5.1,这里是我现在得到的堆栈跟踪:

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

无法加载文件或程序集“Newtonsoft.Json”或它的一个依赖项。 定位的程序集清单定义与程序集引用不匹配。 (来自HRESULT的exception:0x80131040)

说明:执行当前Web请求期间发生未处理的exception。 请查看堆栈跟踪,了解有关错误的更多信息以及源代码的位置。

exception详细信息:System.IO.FileLoadException:无法加载文件或程序集“Newtonsoft.Json”或它的一个依赖项。 定位的程序集清单定义与程序集引用不匹配。 (来自HRESULT的exception:0x80131040)

源错误:

在执行当前Web请求期间生成未处理的exception。 有关exception的来源和位置的信息可以使用下面的exception堆栈跟踪来标识。

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

===预绑定状态信息===日志:DisplayName = Newtonsoft.Json(部分)警告:为程序集提供部分绑定信息:警告:程序集名称:Newtonsoft.Json | 域ID:2 WRN:仅提供部分程序集显示名称时发生部分绑定。 警告:这可能会导致活页夹加载不正确的程序集。 警告:build议为程序集提供完全指定的文本标识,WRN:由简单名称,版本,文化和公钥标记组成。 警告:有关此问题的更多信息和常见解决方法,请参阅白皮书http://go.microsoft.com/fwlink/?LinkId=109270 。 LOG:Appbase = file:/// c:/ users / user / documents / visual studio 2013 / Projects / foo / bar / LOG:Initial PrivatePath = c:\ users \ user \ documents \ visual studio 2013 \ Projects \ foo \ bar \ bin调用程序集:(未知)。 === LOG:这个绑定在默认的加载上下文中启动。 日志:使用应用程序configuration文件:c:\ users \ user \ documents \ visual studio 2013 \ Projects \ foo \ bar \ web.config LOG:使用主机configuration文件:C:\ Users \ user \ Documents \ IISExpress \ config \ aspnet .config LOG:使用C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ config \ machine.config中的计算机configuration文件。 日志:此时策略不适用于引用(私有,自定义,部分或基于位置的程序集绑定)。 日志:尝试下载新的URL文件:/// C:/ Users / user / AppData / Local / Temp / 1 / Temporary ASP.NET Files / root / 48686d37 / 9d7a6572 / Newtonsoft.Json.DLL。 日志:尝试下载新的URL文件:/// C:/ Users / user / AppData / Local / Temp / 1 / Temporary ASP.NET Files / root / 48686d37 / 9d7a6572 / Newtonsoft.Json / Newtonsoft.Json.DLL。 日志:尝试下载新的URL文件:/// c:/ users / user / documents / visual studio 2013 / Projects / foo / bar / bin / Newtonsoft.Json.DLL。 日志:使用应用程序configuration文件:c:\ users \ user \ documents \ visual studio 2013 \ Projects \ foo \ bar \ web.config LOG:使用主机configuration文件:C:\ Users \ user \ Documents \ IISExpress \ config \ aspnet .config LOG:使用C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ config \ machine.config中的计算机configuration文件。 日志:在应用程序configuration文件中发现redirect:4.5.0.0redirect到6.0.1.0。 日志:后政策参考:Newtonsoft.Json,版本= 6.0.1.0,文化=中性,PublicKeyToken = 30ad4fe6b2a6aeed日志:试图下载新的URL文件:/ / / C /用户/用户/应用程序数据/本地/温度/ 1 / Temporary ASP.NET Files / root / 48686d37 / 9d7a6572 / Newtonsoft.Json.DLL。 日志:尝试下载新的URL文件:/// C:/ Users / user / AppData / Local / Temp / 1 / Temporary ASP.NET Files / root / 48686d37 / 9d7a6572 / Newtonsoft.Json / Newtonsoft.Json.DLL。 日志:尝试下载新的URL文件:/// c:/ users / user / documents / visual studio 2013 / Projects / foo / bar / bin / Newtonsoft.Json.DLL。 警告:比较程序集名称导致不匹配:主版本ERR:无法完成程序集的设置(hr = 0x80131040)。 探测终止。

堆栈跟踪:

[FileLoadException:无法加载文件或程序集“Newtonsoft.Json”或它的一个依赖项。 定位的程序集清单定义与程序集引用不匹配。 (来自HRESULT的exception:0x80131040)]

[FileLoadException:无法加载文件或程序集'Newtonsoft.Json,Version = 6.0.1.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed'或其依赖项之一。 定位的程序集清单定义与程序集引用不匹配。 (从HRESULTexception: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,布尔throwOnFileNotFound,布尔forIntrospection,布尔suppressSecurityChecks)+152 System.Reflection.RuntimeAssembly.InternalLoad(stringassemblyString,证据assemblySecurity,StackCrawlMark&stackMa + System.Reflection.Load(String assemblyString)+28 System.Web.Configuration .CompilationSection.LoadAssemblyHelper(stringassemblyName,布尔starDirective)+38

[ConfigurationErrorsException:无法加载文件或程序集'Newtonsoft.Json,Version = 6.0.1.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed'或其依赖项之一。 定位的程序集清单定义与程序集引用不匹配。 (从HRESULTexception:0x80131040)] System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName,Boolean starDirective)+752 System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory()+218 System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo a)+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):无法加载文件或程序集“Newtonsoft.Json,Version = 6.0.1.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed”或其依赖项之一。 定位的程序集清单定义与程序集引用不匹配。 (从HRESULTexception:0x80131040)] System.Web.HttpRuntime.FirstRequestInit(HttpContext上下文)+9913572 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext上下文)+101 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr,HttpContext上下文)+254

版本信息:Microsoft .NET Framework版本:4.0.30319; ASP.NET版本: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 

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

 <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"

在我的packages.config文件中我有:

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

我已经确定我的电脑在所有位置都有相同的版本,并且我的项目都指向相同的参考path,我尝试了以下方法。 我也确定旧版本的绑定是他们的,并绑定到当前版本的dll。

我在一个严格的框架环境下工作,框架团队经常使用不同的dll来版本化。

我如何解决这个问题是在Visual Studio(2013)中运行包pipe理器控制台。 从那里我运行以下命令:

 update-package Newtonsoft.Json -reinstall 

其次是

 update-package Newtonsoft.Json 

这通过并更新了我所有的configuration文件和相关的项目文件。 强制他们都到相同版本的DLL。 最初版本是4.5之前再次更新以获得最新的。

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

我的MVC解决scheme中的一些项目使用该DLL的版本4的NuGet包。

然后,我添加了一个NuGet包(用于我的情况下的Salesforce),它将Newtonsoft.Json版本6作为其中一个项目的依赖项。 那是我引起的问题。

为了清理干净,我使用了NuGet Package Manager中的Updates部分(closuresTools菜单或解决方法,右键单击)来更新整个解决scheme中的Json.Net软件包,所以它是所有项目的相同版本。

之后,我刚刚检查了应用程序configuration文件,以确保任何绑定redirect线将去我的select版本如下。

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

好吧,我觉得我现在就可以开始工作了。 我删除了我的机器上的每一个Newtonsoft.Json.dll,这并不是我能find的最新版本,确保我在NuGet中拥有最新版本,并且构build它并确保它是bin文件夹中的最新版本,我在web.config和.csproj中留下了更改。 现在我正在处理另一个错误,所以它必须工作..

就我而言,这只是一个问题:

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

这个问题是由于我重映射一个TFS文件夹造成的。

如果你正在使用某种颠覆:删除项目并重新下载它,它对我有用:S

我已经尝试了奥列格的步骤,他们为我的相同的情况工作。

脚步:

  1. 在包pipe理器中运行update-package Newtonsoft.Json -reinstall

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

  3. closures你的Visual Studio并重新打开它。

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

对于参考MVC 5项目的testing项目,我有同样的问题。 这发生在我与MVC 5项目合并之后。 我通过安装Visual Studio 2012更新来解决这个问题。

  • 在你的视觉工作室去
    1. 工具>扩展和更新
    2. 在左边的手风琴列表中select“更新”。
    3. select“产品更新”。
    4. 更新到最新版本

没有任何答案,包括被检查的答案对我没有效用。

解决scheme要简单得多。 我首先从我的BUS层删除了引用。 然后从项目中删除dll(确保它不见了),然后从nuget packeges重新安装JSON.NET。 而棘手的部分是,“把它关掉再打开”。

我刚刚重新启动视觉工作室,它在那里工作!

所以,如果你尽可能地尝试,仍然不能解决问题,那就试着closures视觉工作室,这可能会有所帮助。

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

如果这些都不起作用,请检查这个答案:

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

TL; DR :从configuration文件的configuration标签中删除xml命名空间,否则绑定redirect将被忽略)

您可以通过在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-8.0.0.0" newVersion="8.0.0.0"/> </dependentAssembly> </assemblyBinding> </runtime> 

简单的步骤。 (1)在包pipe理器中运行“update-package Newtonsoft.Json -reinstall”。

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

(3)closures你的视觉工作室并重新打开它。

(4)现在再次运行您的项目。 我相信应该没问题

我碰到这个问题,因为我有:项目A(桌面.exe)引用项目B(便携式.dll)。 A&B有不同版本的JSON.Net,所以有一个加载器冲突。 一旦我使JSON.net的所有版本都一样,它的工作。 (这实际上是上面的一些解决scheme正在做的 – 我只是叫出为什么它的作品)

最近我和这个老项目一起奋斗。

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

我有一个后生成脚本复制依赖程序集从DLL库文件夹到bin文件夹。 nuget前几天的常见设置。

所以每次构build后构build脚本都将Json.net的正确版本replace为旧版本

我有完全相同的问题,Visual Studio 13默认库为4.5,所以我有2个解决scheme之一是在webconfig文件中取出对此的引用。 这是最后的手段,它确实有效。

错误消息指出在这个位置/Projects/foo/bar/bin/Newtonsoft.Json.DLL有问题。 DLL在哪里! 一个基本的财产检查告诉我这是4.5.0.0或类似的,所以我改变了networkingconfiguration,以查找4.5和4.5。

这些select都没有为我工作,最终它是;

testing>testing设置> * .testrunco​​nfig

我不得不添加一个新的行

 <DeploymentItem filename="packages\Newtonsoft.Json.4.5.8\lib\net40\Newtonsoft.Json.dll" /> 

确保path和版本对于您的设置是正确的。

在我的情况下,我忘了更新后更新部署web.config。

我遇到过同样的问题。 我创build了一个web api项目,然后将其从.net 4.5.1升级到.net 4.6.1。 closuresIDE,停止IIS,并删除C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET Files \ dir的内容修复了这个问题。

HTH

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

在所有项目中安装相同版本的Newtonsoft.Json ,即使它们不使用它。

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

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

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

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

通过评论它在我的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> 

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

 update-package Newtonsoft.Json -reinstall