Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Visual Studio 2012 Web API项目赢得';t运行-can';找不到Newtonsoft.Json_C#_Visual Studio 2012_Asp.net Web Api - Fatal编程技术网

C# Visual Studio 2012 Web API项目赢得';t运行-can';找不到Newtonsoft.Json

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'或其依赖项之

在运行干净的解决方案并重建之后,我的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引用,因为默认情况下它已经包含在包中。所以

  • 打开packages.config
  • 删除Newtonsoft.Json条目
  • 保存并构建
  • 从NuGet重新添加Newtonsoft.Json
  • 构建并运行

  • 我搞错了,它自己解决了

    启动了一个新的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中修复。请看这里:

    因此,我采取了以下步骤:

  • 根据链接将Nuget版本更新为2.2.2
  • 通过从NUget卸载,删除了我的项目中对Json的所有引用(右键单击project并查找包,然后卸载(甚至) 这没用)
  • 从计算机上物理删除了包文件。我在这里找到了包文件:://projectdir/packages/Newtonsoft.JSON
  • 已从物理目录(//projectname/packages.config)中删除packages.config文件
  • 这一切完成后,我通过Nuget再次添加了Newtonsoft,然后进行了重建,它成功了

  • 我使用的是同一个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/
    这是我问题的原因。我去掉了,工作得很好