AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.04.2024, 13:51   #1  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,875 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Из какого слоя компилятор берет SysObsoleteAttribute ?
Привет

Обнаружилась интересная особенность.
Если компилировать класс SubledgerJournalizer
то для метода loadaccountingDistributionTmp
выдает предупрждение компилятора
"Метод SubledgerJournalizer::loadedAccountingDistributionTmp устарел. This delegate will be replaced with a parameter accepting AccountingDistributionTmp buffer in future version."

Идем в делегат loadedAccountingDistributionTmp
удаляем там строку
X++:
[SysObsoleteAttribute('This delegate will be replaced with a parameter accepting AccountingDistributionTmp buffer in future version.', false)]
Все перекомпилируем, а предупреждение не пропадает!
Сбрасываем всевозможные кеши, пересобираем CIL, рестартуем аос, ничего не помогает.

Барабашка ?
Или компилятор смотрит атрибут SysObsoleteAttribute не только из USR слоя, но просматривает все слои ?

Но зачем ?
Или я недочистил какие-то кеши ?

Dax2012 R3
Старый 09.04.2024, 14:22   #2  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,895 / 5650 (194) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Цитата:
Сообщение от Logger Посмотреть сообщение
Идем в делегат loadedAccountingDistributionTmp
удаляем там строку
X++:
[SysObsoleteAttribute('This delegate will be replaced with a parameter accepting AccountingDistributionTmp buffer in future version.', false)]
Все перекомпилируем, а предупреждение не пропадает!
Сбрасываем всевозможные кеши, пересобираем CIL, рестартуем аос, ничего не помогает.
Интересно,а что будет, если на USR-слое поставить
[SysObsoleteAttribute('Тут какая-то фигня', false)]

Я просто подозреваю, что с точки зрения компилятора, аттрибут - это отдельная сущность уровня класса. И чтобы ее переопределить, надо ее не просто удалить в тексте более низкого слоя, а заместить (или - возможно - поставить обратный аттрибут, но для SysObsolete такого нет).
За это сообщение автора поблагодарили: Logger (3).
Старый 09.04.2024, 14:30   #3  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,875 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от fed Посмотреть сообщение
Интересно,а что будет, если на USR-слое поставить
[SysObsoleteAttribute('Тут какая-то фигня', false)]
Написал так

X++:
/// <summary>
/// An <c>AccountingDistributionTmp</c> record loaded event handler delegate.
/// </summary>
[SysObsoleteAttribute('Test', false)]
delegate void loadedAccountingDistributionTmp()
{
}
Сбросил кеши

ничего не изменилось.

Как-то это косячно.
Старый 09.04.2024, 14:45   #4  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,875 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Прикол еще в том, что на sys слое нет никакого атрибута. Он появляется на syp слое. Затирается или изменяется на usr, но аксапте уже пофиг.
Старый 09.04.2024, 21:39   #5  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,275 / 3476 (122) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Не смог воспроизвести.
Что сделал:
1. Изменил сообщение. Тут надо понимать, что "метод устарел" - это вообще сам факт наличия атрибута SysObsoleteAttribute, а внутренний параметр (текст) - это сообщение, которое выдается в окно ошибок компиляции
2. Собрал полный CIL, рестартовал АОС
3. Ошибка (предупреждение) не исчезла. Пошел, просто закомментировал атрибут. Ошибка исчезла. Сборку CIL не делал
4. Попробовал поставить любой другой атрибут (т.е. любой другой наследник класса SysAttribute). Перекомпилировал. Ошибки (предупреждения) нет. Сборку CIL (ни полную, ни инкрементную) также не делал

Нажмите на изображение для увеличения
Название: SNAG_Program-0168.png
Просмотров: 21
Размер:	94.7 Кб
ID:	13645
__________________
Возможно сделать все. Вопрос времени
За это сообщение автора поблагодарили: Logger (10).
Старый 10.04.2024, 12:01   #6  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,875 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
Не смог воспроизвести.
Что сделал:
...
Спасибо за подсказку

У меня теперь тоже пропало когда поставил так
X++:
/// <summary>
/// An <c>AccountingDistributionTmp</c> record loaded event handler delegate.
/// </summary>
[SysOperationLabelAttribute('Test')]
delegate void loadedAccountingDistributionTmp()
{
}
А если так
X++:
/// <summary>
/// An <c>AccountingDistributionTmp</c> record loaded event handler delegate.
/// </summary>
delegate void loadedAccountingDistributionTmp()
{
}
то ничего не пропадает

И это странно.
Ну главное что цель достигнута.

Всем спасибо.
Старый 10.04.2024, 12:09   #7  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,875 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от fed Посмотреть сообщение
Интересно,а что будет, если на USR-слое поставить
[SysObsoleteAttribute('Тут какая-то фигня', false)]
Текст все таки изменяется.
Проглядел, видимо потому, что начало сообщения длинное и одинаковое "Метод SubledgerJournalizer::loadedAccountingDistributionTmp устарел....".
Теги
dax2012, sysobsoleteattribute, компилятор, предупреждение компилятора

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Экспорт с конкретного слоя kia DAX: Программирование 31 03.04.2015 13:55
Ошибки при установке SP и русского слоя. (AX 2009) lekonstantine DAX: Администрирование 6 30.11.2011 12:48
Массовое создание СФ. Почему берет номера из списка удаленных СФ? mazzy DAX: Функционал 6 21.03.2011 22:35
Программынй экспорт из определенного слоя Vasilenko Alexsandr DAX: Программирование 14 08.12.2005 15:07
Экспорт таблиц и форм с указанием слоя Zepp DAX: Администрирование 8 31.10.2005 20:16

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 20:27.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.