2012-04-19 23 views
1

试图反序列化JSON时出现异常。据我了解,这个文件是由用户本地文件系统上的Silverlight运行时提供的,不需要包含在XAP文件中。Silverlight文件未找到Newtonsoft反序列化中的System.Runtime.Serialization

T result = default(T); 

result = JsonConvert.DeserializeObject<T>(data); 

任何想法为什么我得到这个错误?


Exception encountered: System.IO.FileNotFoundException: Could not load file or assembly 'System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The system cannot find the file specified. 

File name: 'System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' 

    at System.ModuleHandle.ResolveType(RuntimeModule module, Int32 typeToken, IntPtr* typeInstArgs, Int32 typeInstCount, IntPtr* methodInstArgs, Int32 methodInstCount, ObjectHandleOnStack type) 

    at System.ModuleHandle.ResolveTypeHandleInternal(RuntimeModule module, Int32 typeToken, RuntimeTypeHandle[] typeInstantiationContext, RuntimeTypeHandle[] methodInstantiationContext) 

    at System.Reflection.RuntimeModule.ResolveType(Int32 metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments) 

    at System.Reflection.CustomAttribute.FilterCustomAttributeRecord(CustomAttributeRecord caRecord, MetadataImport scope, Assembly& lastAptcaOkAssembly, RuntimeModule decoratedModule, MetadataToken decoratedToken, RuntimeType attributeFilterType, Boolean mustBeInheritable, Object[] attributes, IList derivedAttributes, RuntimeType& attributeType, IRuntimeMethodInfo& ctor, Boolean& ctorHasParameters, Boolean& isVarArg) 

    at System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeModule decoratedModule, Int32 decoratedMetadataToken, Int32 pcaCount, RuntimeType attributeFilterType, Boolean mustBeInheritable, IList derivedAttributes, Boolean isDecoratedTargetSecurityTransparent) 

    at System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeType type, RuntimeType caType, Boolean inherit) 

    at System.RuntimeType.GetCustomAttributes(Type attributeType, Boolean inherit) 

    at Newtonsoft.Json.Utilities.ReflectionUtils.GetAttributes[T](ICustomAttributeProvider attributeProvider, Boolean inherit) 

    at Newtonsoft.Json.Utilities.ReflectionUtils.GetAttribute[T](ICustomAttributeProvider attributeProvider, Boolean inherit) 

    at Newtonsoft.Json.Serialization.JsonTypeReflector.GetAttribute[T](Type type) 

    at Newtonsoft.Json.Serialization.JsonTypeReflector.GetAttribute[T](ICustomAttributeProvider attributeProvider) 

    at Newtonsoft.Json.Utilities.ThreadSafeStore`2.AddValue(TKey key) 

    at Newtonsoft.Json.Utilities.ThreadSafeStore`2.Get(TKey key) 

    at Newtonsoft.Json.Serialization.CachedAttributeGetter`1.GetAttribute(ICustomAttributeProvider type) 

    at Newtonsoft.Json.Serialization.DefaultContractResolver.CreateContract(Type objectType) 

    at Newtonsoft.Json.Serialization.DefaultContractResolver.ResolveContract(Type type) 

    at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.ReadForType(JsonReader reader, Type t, JsonConverter propertyConverter) 

    at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.ReadForTypeArrayHack(JsonReader reader, Type t) 

    at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateList(IWrappedCollection wrappedList, JsonReader reader, String reference, JsonArrayContract contract) 

    at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.<>c__DisplayClass1.<CreateAndPopulateList>b__0(IList l, Boolean isTemporaryListReference) 

    at Newtonsoft.Json.Utilities.CollectionUtils.CreateAndPopulateList(Type listType, Action`2 populateList) 

    at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateAndPopulateList(JsonReader reader, String reference, JsonArrayContract contract) 

    at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateList(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, Object existingValue, String reference) 

    at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, Object existingValue) 

    at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueNonProperty(JsonReader reader, Type objectType, JsonContract contract) 

    at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType) 

    at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType) 

    at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings) 

    at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings) 

    at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value) 

    at Sungard.Helios.UI.Common.Infrastructure.ControllerUtility.<>c__DisplayClass1d`1.<GetResponse>b__16(IAsyncResult r) 
--------------------------- 
OK 
--------------------------- 

编辑:

这里式T

样本
using System; 
using System.Runtime.Serialization; 

namespace MyNs 
{ 
    [DataContract] 
    public class ClientQuery 
    { 
     [DataMember] 
     public int ClientId { get; set; } 

     [DataMember] 
     public string ClientName { get; set; } 
    } 
} 
+0

检查您的数据是否为空值。布尔变量中的空值会抛出奇怪的错误。 – bperreault 2012-04-20 01:41:35

+0

出于兴趣是您的程序集引用,System.Runtime.Serialization,标记为“复制本地”= true? – 2012-04-20 08:48:17

+0

我尝试过使用Copy Local = false和Copy Local = true,并且两次失败。 我将运行测试以确保值不为空。我可以保证该值永远不会为空,但它将是'{}'来表示一个空数组。 – 2012-04-20 12:13:35

回答

0

的问题是,我们有一个Newtonsoft.Json.dll内置的Silverlight 4,这是4.0.5.14411版本它不是为Silverlight 5构建的。当Visual Studio构建解决方案时,它将项目正确映射到正确的System.Runtime.Serialization dll。在使用MSBUILD的TFS中排队构建不会。

我升级到最新版本,并解决了问题。

相关问题