2

在 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

4

1 回答 1

1

运行程序时,它会从输出目录中提取 dll。最初,Newtonsoft.Json没有被复制到输出目录,但是通过指定Privateto True,您告诉 Visual Studio 将Newtonsoft.Jsondll 与您的程序一起复制到输出文件夹。

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

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

于 2013-06-08T18:04:02.030 回答