C# Visual Studio 2012 Web API项目赢得';t运行-can';找不到Newtonsoft.Json
在运行干净的解决方案并重建之后,我的MVC4WebAPI项目停止工作。很抱歉,找不到Newtonsoft.Json 我知道MS现在正在使用它作为默认的JSON序列化程序,但它不在项目的引用列表中,我不能从NuGet添加它,因为它说它已经安装好了 有人知道会出什么问题吗 完整堆栈跟踪: [FileNotFoundException:无法加载文件或程序集 'Newtonsoft.Json,版本=4.5.0.0,区域性=中性, PublicKeyToken=30AD4FE6B2A6EED'或其依赖项之一 系统找不到指定的文件。]C# Visual Studio 2012 Web API项目赢得';t运行-can';找不到Newtonsoft.Json,c#,visual-studio-2012,asp.net-web-api,C#,Visual Studio 2012,Asp.net Web Api,在运行干净的解决方案并重建之后,我的MVC4WebAPI项目停止工作。很抱歉,找不到Newtonsoft.Json 我知道MS现在正在使用它作为默认的JSON序列化程序,但它不在项目的引用列表中,我不能从NuGet添加它,因为它说它已经安装好了 有人知道会出什么问题吗 完整堆栈跟踪: [FileNotFoundException:无法加载文件或程序集 'Newtonsoft.Json,版本=4.5.0.0,区域性=中性, PublicKeyToken=30AD4FE6B2A6EED'或其依赖项之
d:\Data\Source中的MvcWebRole1.WebApiApplication.Application\u Error() 受约束的 Projects\georace\georace\Server\GeoRaceServer\MvcWebRole1\Global.asax.cs:70 [HttpException(0x80004005):无法加载文件或程序集 'Newtonsoft.Json,版本=4.5.0.0,区域性=中性, PublicKeyToken=30AD4FE6B2A6EED'或其依赖项之一 系统找不到指定的文件。]
System.Web.HttpApplicationFactory.EnsureStartCalledForIntegratedMode(HttpContext 上下文,HttpApplication应用程序)+12838633
System.Web.HttpApplication.registereventsubscriptionswithis(IntPtr appContext、HttpContext、MethodInfo[]处理程序)+175
System.Web.HttpApplication.InitSpecial(HttpApplicationState, MethodInfo[]处理程序,IntPtr appContext,HttpContext)+304
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext,HttpContext)+404
System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext)+475 [HttpException(0x80004005):无法加载文件或程序集 'Newtonsoft.Json,版本=4.5.0.0,区域性=中性, PublicKeyToken=30AD4FE6B2A6EED'或其依赖项之一 系统找不到指定的文件。]
System.Web.HttpRuntime.FirstRequestInit(HttpContext上下文)+12851296 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext上下文) +159 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr,HttpContext)+12679949
好的-在我周围找到了一份工作,以防其他人被这个微软bug打到。 问题是无法添加NuGet引用,因为默认情况下它已经包含在包中。所以
我搞错了,它自己解决了 启动了一个新的VS 2012项目后,我使用NuGet安装了Newtonsoft.JSON,正如前面提到的,已经安装了4.5.6版,我很高兴看到它被卸载并安装了4.5.10版
甜美。检查是否有对JSON.NET的“旧式”(pre-nuget)引用指向嵌入到项目中的过期本地副本 我有一个旧的
Reference\Lib\JSON.NET
,它在我的引用路径中,并获得了优先权
检查JSON.NET属性页是否指向预期的Nuget包版本
我在部署了live的Team Server构建中遇到了这个问题。我必须修复我的原始解决方案并进行干净的构建,以确保旧的
Reference\Lib\
DLL没有被拾取。在我的例子中,我检查了一个同事的项目,不知怎的,它使我的Newtonsoft.Json引用变差了,所以我不得不删除它。右键单击项目->管理NuGet软件包。在左侧单击“Installed Packages”,然后选择Json.NET并卸载它。在我的情况下,我还必须卸载其他依赖软件包(Microsoft ASP.Net Web API和其他)。选择左侧的“Online”并搜索Json.Net,然后重新安装。对于NuGet已安装的任何要重新安装的包,只需在包管理器控制台中键入以下命令即可:
在任何项目中更新:
Update-Package Newtonsoft.Json -Reinstall
在特定项目中更新
Update-Package Newtonsoft.Json -Reinstall -Project My.App
我结合了其他投稿人陈述的几个选项,再加上一个新选项 首先,事实证明NuGet2.1有一些问题,这个问题记录在一个bug中,并在2.2.2中修复。请看这里: 因此,我采取了以下步骤:
我使用的是同一个FileNotFoundException,结果发现我的项目中已经有了对Newtonsoft.Json的引用,但是“Copy Local”属性没有设置为TRUE。
只要将其设置为TRUE,这样dll就会被复制到输出目录(如果这也是您的情况)。对我来说,唯一修复此错误的方法是将缺少的部分添加到我的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>
您可以尝试安装带有‑IgnoreDependencies标志的SocialAuth.Net包,然后手动安装依赖项,并确保只安装最新版本的Json.Net库
然后在运行时,SocialAuth.Net包将尊重程序集重定向,并加载Json.Net(v4.5),而不是旧版本。我测试了这里所说的所有内容,但没有任何效果。在我的示例中,我有一个类似这样的路径文件夹
- #项目/Web/App/