Добавление ссылки Unity dll на проект Silverlight 4 - PullRequest
0 голосов
/ 28 октября 2010

Этим утром у меня возникла необычная проблема с моим приложением 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.

Любая помощь очень ценится.

Приветствия --- Jag

Ответы [ 3 ]

1 голос
/ 28 октября 2010

Убедитесь, что вы на самом деле ссылаетесь на сборку Silverlight, а не на настольную.Класс AllowPartiallyTrustedCallersAttribute отсутствует в версии Silverlight.

Используете ли вы Unity 2.0?Если это так, DLL называется «Microsoft.Practices.Unity.Silverlight.dll».Это DLL, которую вы добавили?Если «.Silverlight» отсутствует в имени файла, то вместо этого вы ссылаетесь на dll рабочего стола.

0 голосов
/ 12 апреля 2011

Выполнение чистой сборки с последующей полной перестройкой исправило эту проблему для меня.

0 голосов
/ 28 октября 2010

В этой статье может содержаться полезная информация.В основном это говорит о том, что:

"ограничение при использовании Unity в среде частичного доверия состоит в том, что вы не можете регистрировать и использовать сопоставления с помощью методов RegisterType, где целевой класс является внутренним (C #), Friend (VisualBasic .NET), частный (C #) или частный (Visual Basic .NET). "

...