В этой статье:

Общие сведения

Описание

Возможные последствия

Решение

Рекомендации

Кэширование сборок при компиляции форм и модулей

Номер статьи: KB000011

Общие сведения

Связанные блоки:

Описание

Во время компиляции модулей/форм/сборок (Fore или Fore.NET) на локальном диске создается файловый кэш, в котором хранится скомпилированная версия объекта. По умолчанию кэш располагается в профиле пользователя, в подкаталоге «\AppData\Local\Foresight\Foresight Analytics Platform\AsmCache<n>\Mod\<ID репозитория>\<номер сборки>\». При необходимости путь хранения файлового кэша можно изменить, более подробно об этом читайте в статье «Кэширование», подраздел «Управление настройками». Кэш позволяет ускорить запуск разрабатываемых приложений.

Для ускорения первого запуска прикладных проектов в промышленных условиях скомпилированные объекты среды разработки также могут храниться в базе репозитория. Для управления режимом хранения скомпилированных объектов в базе репозитория предназначен флаг «Кэширование сборок только на локальном диске». Данный флаг располагается в окне «Параметры репозитория». При первом запуске скомпилированные версии объектов будут скопированы в файловый кэш. После этого вся остальная работа будет производиться с файловым кэшем.

Возможные последствия

По умолчанию флаг «Кэширование сборок только на локальном диске» снят, при этом скомпилированная версия объекта сохраняется, как на локальном диске, так и в репозитории.

Если работа в одном репозитории ведется разными версиями платформы, а скомпилированные сборки сохраняются в репозитории, то в рамках одного проекта могут храниться формы и модули, скомпилированные разными версиями платформы. Это может привести к ошибкам вида: «Access violation…» или «Internal runtime error…», возникающим, например, при запуске одной формы из другой, скомпилированной другой версией платформы. Данные ошибки вызваны несовместимостью форматов в разных версиях платформы.

Также это может замедлить процесс разработки. При компиляции объектов на одном компьютере их скомпилированные версии будут сохраняться в базу репозитория. При параллельной работе с этими же объектом на другом компьютере будет происходить сравнивание локальных скомпилированных версий и версий в базе. Это приведет к постоянному обнаружению различий, что в свою очередь повысит нагрузку на сервер из-за постоянной загрузки версий на локальный диск и обратно в базу.

Решение

Для исключения подобных последствий:

DELETE FROM b_mod WHERE obj IN (SELECT obj FROM b_obj WHERE cls IN (1537, 1538, 1539))

Рекомендации

См. также:

База знаний разработчиков | Окно «Параметры репозитория»Окно «Параметры репозитория»