добрый день!

пакет не работает на новой версии приложения 8,0,6. у меня пакет-сборка.

он падает с ошибкой 

 Could not load type 'Terrasoft.Configuration.BaseProductEntry_Base_Terrasoft' from assembly 'Terrasoft.Configuration, Version=8.0.6.3429, Culture=neutral, PublicKeyToken=null'.

Я сделал отдельную дллку, которая ссылается на проект Terrasoft.Configuration.Dev (Terrasoft.Configuration.dll). в этой библиотеке хранится логика приложения. в определенный момент времени мне необходимо для контакта добавить номер. я делаю то след образом:

var newPhone = new ContactCommunication(connection);
newPhone.SetDefColumnValues();
 
newPhone.CommunicationTypeId = Guid.Parse("d4a2dc80-30ca-df11-9b2a-001d60e938c6");
string phoneWithoutPlus = GetPhoneWithoutPlus(phone);
newPhone.Number = phoneWithoutPlus;
newPhone.ContactId = contact.Id;
newPhone.Save(validateRequired: false, setColumnDefValue: false);

Terrasoft.Configuration.ContactCommunication тип используется из проекта Terrasoft.Configuration.Dev и он наследует ContactCommunication_Base_Terrasoft который отсутствует в 8,0,6 судя по ошибке, но при этом он есть в версиях 7,18 и 8,0,4.

 

подскажите - данное поведение ожидаемое?

если да, то как тогда можно использовать обьекты из проекта Terrasoft.Configuration.Dev для того чтобы не делать свои классы для работы со стандартными обьектами. или теперь вообще нельзя использовать обьекты из Terrasoft.Configuration.Dev и надо писать свои классы?

если нет, то что делать дальше? будет фикс скоро?

Нравится

3 комментария
Лучший ответ

В новой версии много объектов было перенесено из пакета Base в CrtBase. Соответственно автоматически сгенеририованное имя объекта поменялось и называется не BaseProductEntry_Base_Terrasoft а BaseProductEntry_CrtBase_Terrasoft.



Но это изначально неправильный подход работать с объектами через такие названия, лучше сводить их до универсальных названий, например BaseProductEntry. В таком случае такие проблемы не будут возникать.

 

Так же хорошей практикой является не работать с классами напрямую по названию, а работать через универсальный класс Entity. В таком случае даже зависимость от Terrasoft.Configuration не нужна, достаточно Terrasoft.Core.

пинг. можете подсказать почему так происходит?

В новой версии много объектов было перенесено из пакета Base в CrtBase. Соответственно автоматически сгенеририованное имя объекта поменялось и называется не BaseProductEntry_Base_Terrasoft а BaseProductEntry_CrtBase_Terrasoft.



Но это изначально неправильный подход работать с объектами через такие названия, лучше сводить их до универсальных названий, например BaseProductEntry. В таком случае такие проблемы не будут возникать.

 

Так же хорошей практикой является не работать с классами напрямую по названию, а работать через универсальный класс Entity. В таком случае даже зависимость от Terrasoft.Configuration не нужна, достаточно Terrasoft.Core.

спасибо за ответ, Владислав!

Показать все комментарии