Добрый вечер.
Перебираюсь на .NET4.
Использую BLTookit + BLTgen.
Кучу времени убил, не могу решить проблему:
при старте приложения BLToolkit.TypeBuilder.TypeFactory.CreateInstance[T]() кидает вот такое исключение:
System.TypeLoadException
Message=Inheritance security rules violated by type: 'DAO.BLToolkitExtension.DomainAccessor'. Derived types must either match the security accessibility of the base type or be less accessible.
Source=mscorlib
TypeName=DAO.BLToolkitExtension.DomainAccessor
StackTrace:
at System.Reflection.RuntimeAssembly.GetType(RuntimeAssembly assembly, String name, Boolean throwOnError, Boolean ignoreCase, ObjectHandleOnStack type)
at System.Reflection.RuntimeAssembly.GetType(String name, Boolean throwOnError, Boolean ignoreCase)
at System.Reflection.Assembly.GetType(String name)
at BLToolkit.TypeBuilder.TypeFactory.GetType(Object hashKey, Type sourceType, ITypeBuilder typeBuilder) in
DomainAccessor выглядит так:
public abstract class DomainAccessor : BLToolkit.DataAccess.DataAccessor
{
}
Google выдает 2 совета:
1) Добавить
[assembly: System.Security.SecurityRules(System.Security.SecurityRuleSet.Level1)]
Не помогает — добавлял в AssemblyInfo.cs BlTookit-а и в библиотеку, его использующую.
2) Добавить
<trust level="Full" legacyCasModel="true"/>
в web.config (библиотека используется в web-приложении). Тоже безрезультатно.
На форуме уже был такой request
http://www.rsdn.ru/forum/prj.rfd/3907951.1.aspx, но без ответа.
Please help
Вообщем кто столкнется с такой проблемой, решение такое:
ищем и удаляем все 'AllowPartiallyTrustedCallers' аттрибуты:
AssemblyInfo.cs:
#if !SILVERLIGHT
[assembly: AllowPartiallyTrustedCallers]
#endif
AssemblyBuilderHelper.cs:
#if !SILVERLIGHT
_assemblyBuilder.SetCustomAttribute(
new CustomAttributeBuilder(
typeof(AllowPartiallyTrustedCallersAttribute)
.GetConstructor(Type.EmptyTypes),
new object[0]));
#endif
В детали не углублялся, видимо они использовались для каких-то целей.