После того, как попробовал собрать проект обфускатором — падает на создании класса:
Unhandled Exception: System.AggregateException: One or more errors occurred. ---> BLToolkit.TypeBuilder.TypeBuilderException: Could not build the 'DB.Car.Item'
type. ---> System.ArgumentException: Illegal characters in path.
at System.IO.Path.CheckInvalidPathChars(String path)
at System.IO.Path.GetDirectoryName(String path)
at BLToolkit.TypeBuilder.TypeFactory.GetAssemblyBuilder(Type type, String suffix)
at BLToolkit.TypeBuilder.TypeFactory.GetType(Object hashKey, Type sourceType, ITypeBuilder typeBuilder)
--- End of inner exception stack trace ---
at BLToolkit.TypeBuilder.TypeFactory.GetType(Object hashKey, Type sourceType, ITypeBuilder typeBuilder)
at BLToolkit.Reflection.TypeAccessor.GetAccessor(Type originalType)
at BLToolkit.Mapping.ObjectMapper.Init(MappingSchema mappingSchema, Type type)
at BLToolkit.Mapping.MappingSchema.GetObjectMapper(Type type)
at BLToolkit.Mapping.MappingSchema.MapDataReaderToList[T](IDataReader reader, IList`1 list, Object[] parameters)
at BLToolkit.Data.DbManager.ExecuteListInternal[T](IList`1 list, Object[] parameters)
at BLToolkit.Data.DbManager.ExecuteList[T]()
at DB.Car.ItemHandler.ByDevice(DBSession session, Int32 IDDEV) in File45:line 114
Окружение: namespace DB.Car и класс Item в нём — живут в DataLayer.dll и есть ещё ехешник, в котором выполняется вся работа.
Если исключить DataLayer.dll из обфускации — всё ок. В открытом виде же отдавать её крайне нежелательно.
Вопрос извечный — чего делать? BLToolkit 4.0.0.996 (в свойствах файла по крайней мере такая). Crypto Obfuscator 2010 R2 trial.
Здравствуйте, denisio_mcp, Вы писали:
_>После того, как попробовал собрать проект обфускатором — падает на создании класса:
...
_>Окружение: namespace DB.Car и класс Item в нём — живут в DataLayer.dll и есть ещё ехешник, в котором выполняется вся работа.
_>Если исключить DataLayer.dll из обфускации — всё ок. В открытом виде же отдавать её крайне нежелательно.
_>Вопрос извечный — чего делать? BLToolkit 4.0.0.996 (в свойствах файла по крайней мере такая). Crypto Obfuscator 2010 R2 trial.
Я бы посоветовал попробовать использовать BLTGen.exe и генерить классы после компиляции, а не в рантайме. Потом попробовать обфускировать DataLayer.dll и DataLayer.BLToolkitExtension.dll и поставлять все это вместе.
В программе в самом начале укажите (ну или через конфигурацию):
TypeFactory.LoadTypes = true
Вообще в BLT очень много завязанно на Reflection и некоторые обфускаторы уж слишком рьяно все перелопачивают и нет никакой гарантии, что BLT будет работать. К примеру есть:
public abstract class Item
{
public abstract int ItemType { get; set; }
}
доблесный обфускатор превратит это в
public abstract class @#$@#$
{
public abstract int $%$#%$# { get; set; }
}
Теперь приезжает к вам данные — и маппер пытается замапить найти куда положить ItemType из записи и не находит — так как он не догадывается, что ItemType это тоже самое что и $%$#%$#.
Кстати на самой странице Crypto Obfuscator написанно что они предоставляют "Anti-Reflection protection"...
Борис.
... << RSDN@Home 1.2.0 alpha 4 rev. 1238>>
Здравствуйте, BorisKV, Вы писали:
BKV>В программе в самом начале укажите (ну или через конфигурацию):
BKV>BKV>TypeFactory.LoadTypes = true
BKV>
Спасибо, попробую.
BKV>BKV>public abstract class @#$@#$
BKV>{
BKV> public abstract int $%$#%$# { get; set; }
BKV>}
BKV>
BKV>Теперь приезжает к вам данные — и маппер пытается замапить найти куда положить ItemType из записи и не находит — так как он не догадывается, что ItemType это тоже самое что и $%$#%$#.
У меня для всех полей выставлен атрибут MapField с именем поля.
... << RSDN@Home 1.2.0 alpha 4 rev. 1476>>