C# Visual studio 2012项目-无法加载';Newtonsoft.Json';

C# Visual studio 2012项目-无法加载';Newtonsoft.Json';,c#,visual-studio-2012,json.net,csproj,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 fil

在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\Newtonsoft.Json.4.5.11\lib\sl4-windowsphone71\Newtonsoft.Json.dll
在packages.config中:

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

我调试了一会儿,通过nuget重新安装了newtonsoft.json包。
但对我有效的解决方案是将“private”属性设置为“True”。

.csproj文件中的更新条目:

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

..\packages\Newtonsoft.Json.4.5.11\lib\sl4-windowsphone71\Newtonsoft.Json.dll
真的

我无法理解它是如何工作的,或者问题是什么。msdn文档中的描述也没有多大帮助。

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

为确保完整性,有关私人文件:

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


好的,这就解释了问题。但我还没有在我的项目中为其他DLL明确指定这个“private”,它们工作得很好(甚至newtonsoft.json以前也工作得很好)。为什么它不将“private”设置为“True”就可以工作?通常,当nuget添加它时,它应该在默认情况下将它添加为private。我假设在某个时候它被意外地转换为非私有(也许有人在项目属性中意外地将“Copy Local”设置为false?)。