今天早上我的Silverlight 4应用程序遇到了一个不寻常的问题。我一直是IoC框架的忠实粉丝,所以我决定将Unity用于我的项目。但是,只要我将程序集添加到项目中,就会出现以下错误。
System.Windows.Markup.XamlParseException occurred
Message=Could not load type 'System.Security.AllowPartiallyTrustedCallersAttribute' from assembly 'mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e'.
StackTrace: 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(RuntimeModule decoratedModule, Int32 decoratedMetadataToken, Int32 pcaCount, RuntimeType attributeFilterType, Boolean isDecoratedTargetSecurityTransparent)
at System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeAssembly assembly, RuntimeType caType)
at System.Reflection.RuntimeAssembly.GetCustomAttributes(Type attributeType, Boolean inherit)
at System.Attribute.GetCustomAttributes(Assembly element, Type attributeType, Boolean inherit)
at MS.Internal.XamlSchemaContext.ProcessXmlnsDefinitions(Assembly assembly, String assemblyName)
at MS.Internal.XamlSchemaContext.EnsureManagedAssemblyAttributesLoaded()
InnerException:
现在如果我删除了dll我的应用程序工作正常。我从早上起就一直在摸不着头脑,而且在StackOverflow搜索或Google上没有太多运气。
非常感谢任何帮助。
干杯---杰格
答案 0 :(得分:1)
请确认您实际上是引用Silverlight程序集而不是桌面程序集。 AllowPartiallyTrustedCallersAttribute类不在Silverlight版本中。
您使用的是Unity 2.0吗?如果是这样,DLL名为“Microsoft.Practices.Unity.Silverlight.dll”。那是你添加的DLL吗?如果“.Silverlight”不在文件名中,那么您将改为引用桌面dll。
答案 1 :(得分:0)
This article可能会提供一些有用的信息。它基本上说:
“在使用Unity时的限制 部分信任环境就是你 无法注册和使用映射 RegisterType方法所在的地方 目标类是内部的(C#),朋友 (Visual Basic .NET),私有(C#)或 私有(Visual Basic .NET)。“
答案 2 :(得分:0)
执行干净的构建,然后进行完全重建,为我解决了这个问题。