C# Visual studio 2012项目-无法加载';Newtonsoft.Json';
在VS 2012中运行windows phone项目时,我遇到以下错误: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
{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?)。