Visual Studio 2012项目 - 无法加载'Newtonsoft.Json'

时间:2013-06-08 13:02:51

标签: c# visual-studio-2012 json.net csproj

在VS 2012中运行Windows Phone项目时,我收到此错误:

    {System.IO.FileNotFoundException: Could not load file or assembly 'Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The system cannot find the file specified.
File name: 'Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed'
   at MobileConnection.SSCClient.SSCConnection.GetHostNameAndPort()
   at MobileConnection.SSCClient.SSCConnection.InitializeSSCConnection(Boolean runningState)}

.csproj文件中的相应条目是:

    <Reference Include="Newtonsoft.Json">
  <HintPath>..\packages\Newtonsoft.Json.4.5.11\lib\sl4-windowsphone71\Newtonsoft.Json.dll</HintPath>
</Reference>

并且,在packages.config中:

  <package id="Newtonsoft.Json" version="4.5.11" targetFramework="wp80" />

我调试了一段时间,通过nuget重新安装了newtonsoft.json包 但是对我有用的解决方案是将'私有'属性设置为'真'。

更新了.csproj文件中的条目:

<Reference Include="Newtonsoft.Json">
  <HintPath>..\packages\Newtonsoft.Json.4.5.11\lib\sl4-windowsphone71\Newtonsoft.Json.dll</HintPath>
   <Private>True</Private>
</Reference>

我无法理解它是如何工作的或问题是什么。 msdn文档中的描述对http://msdn.microsoft.com/en-us/library/vstudio/bb629388.aspx没有多大帮助。

1 个答案:

答案 0 :(得分:1)

运行程序时,它会从输出目录中输入dll。最初,Newtonsoft.Json未被复制到输出目录,但通过将Private指定为True,您告诉Visual Studio将Newtonsoft.Json dll复制到输出文件夹中与您的程序。

为完整起见,有关Private的文档:

  

可选布尔值。指定是否应将引用复制到输出文件夹。此属性与Visual Studio IDE中引用的“复制本地”属性匹配。