Цитата:
Сообщение от
belugin
Посмотрел.
У меня смена EDT и добавление методов отрабатывает после Tools\Caches\Refresh elements (нашел просто методом тыка сперва подумав где может быть)
Ругаться про нововведения надоело - так что будем изучать и пилить

Да, действительно кеш в\Classes\SysOperationAttributedDataContractInfo\buildDataMemberMaps
Лазить в Tools\Caches\Refresh elements каждый раз лень, а может непривычно (но не суть) - по сему добавил сброс кеша в инкрементную компиляцию.
\Classes\SysCompilerOutput\compileForwardElement
X++:
public static client void compileForwardElement(DictClass _dictClass, Dictionary _dictionary, int _numOfClasses)
{
#AOT
ClassNode classNode;
DictClass dictClassLoop;
DictClass childClass;
int i;
if (_dictClass)
{
classNode = infolog.findNode(#ClassesPath + #AOTDelimiter + _dictClass.name());
// SysOperationAttributedDataContractInfo cache reset -->
classFactory.globalObjectCache().remove('SysOperationAttributedDataContractInfo.buildDataMemberMaps', [_dictClass.id()]);
// SysOperationAttributedDataContractInfo cache reset <--
if (classNode)
{
можете прилепить еще куда нибудь или сделать отдельный пункт в контекстном меню. в данном варианте инкрементная компиляция контракта (не контроллера) чистит кеш
Дополнение. Наверное даже лучше добавить сброс кеша всех контрактов на окончание компиляции. Тормозов компиляции это не добавит, а кнопочка F7 всё таки приятнее контекстного меню
\Classes\SysCompilerOutput\endCompilation
X++:
.....
this.setEndFocus();
}
}
// Notify the editors to allow them to update markings
CompileOutputInfos::NotifyChanges();
classFactory.globalObjectCache().clear('SysOperationAttributedDataContractInfo.buildDataMemberMaps');
}
выбирайте кому что нравится