我们有一个有效的Silverlight 3项目。将目标框架更改为Silverlight 4后,应用程序将不再启动。它在生成的InitializeComponent()方法的以下行中抛出异常:
System.Windows.Application.LoadComponent(this, new System.Uri("/SLAppMain;component/App.xaml", System.UriKind.Relative));
这是例外(注意内部异常):
System.Windows.Markup.XamlParseException occurred
Message= [Line: 0 Position: 0]
LineNumber=0
LinePosition=0
StackTrace:
bei System.Windows.Application.LoadComponent(Object component, Uri resourceLocator)
InnerException: System.TypeLoadException
Message=Der Typ 'System.Security.AllowPartiallyTrustedCallersAttribute' konnte nicht aus der mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e -Assembly geladen werden.
StackTrace:
bei System.ModuleHandle.ResolveType(RuntimeModule module, Int32 typeToken, IntPtr* typeInstArgs, Int32 typeInstCount, IntPtr* methodInstArgs, Int32 methodInstCount, ObjectHandleOnStack type)
bei System.ModuleHandle.ResolveTypeHandleInternal(RuntimeModule module, Int32 typeToken, RuntimeTypeHandle[] typeInstantiationContext, RuntimeTypeHandle[] methodInstantiationContext)
bei System.Reflection.RuntimeModule.ResolveType(Int32 metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
bei 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)
bei System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeModule decoratedModule, Int32 decoratedMetadataToken, Int32 pcaCount, RuntimeType attributeFilterType, Boolean mustBeInheritable, IList derivedAttributes, Boolean isDecoratedTargetSecurityTransparent)
bei System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeModule decoratedModule, Int32 decoratedMetadataToken, Int32 pcaCount, RuntimeType attributeFilterType, Boolean isDecoratedTargetSecurityTransparent)
bei System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeAssembly assembly, RuntimeType caType)
bei System.Reflection.RuntimeAssembly.GetCustomAttributes(Type attributeType, Boolean inherit)
bei System.Attribute.GetCustomAttributes(Assembly element, Type attributeType, Boolean inherit)
bei MS.Internal.XamlSchemaContext.ProcessXmlnsDefinitions(Assembly assembly, String assemblyName)
bei MS.Internal.XamlSchemaContext.EnsureManagedAssemblyAttributesLoaded()
InnerException:
问题是类型System.Security.AllowPartiallyTrustedCallersAttribute未包含在mscorlib.dll的Silverlight版本中。
我不知道如何解决这个问题,也不知道在哪里寻找原因。有谁遇到过这个问题?什么可能导致这个错误?
答案 0 :(得分:1)
SL4中不存在AllowPartiallyTrustedCallersAttribute类(既不在mscorlib中也不在其他任何地方),并且在SL 3中也不存在。 所以必须不仅仅是从SL 3到SL 4的转换,我猜 - 你的代码中使用的是AllowPartiallyTrustedCallersAttribute吗?
干杯,亚历克斯
编辑:实际上,您可能需要查看应用程序的AssemblyInfo.cs(在“属性”文件夹中)。也许该属性在那里使用
[assembly: AllowPartiallyTrustedCallers(true)]
。然后你可以简单地删除它,看看会发生什么......
答案 1 :(得分:0)
您是否在项目中使用Unity进行Silverlight?我昨天遇到了完全相同的问题,当我取消引用统一时错误就消失了
答案 2 :(得分:0)
这次演练真的帮我解决了同样的问题http://code.msdn.microsoft.com/RiaServices/Release/ProjectReleases.aspx?ReleaseId=5122
答案 3 :(得分:0)
执行干净的构建,然后进行完全重建,为我解决了这个问题。
答案 4 :(得分:0)
编译后,同名的依赖关系将被悄悄地覆盖并打包到XAP中,因此请确保项目的不同目标平台不会构建到相同的输出文件夹。