CUIX и NET-сборка с одинаковым именем

Сегодня столкнулся с интересной ситуацией, когда файл меню ACAD'a и NET-сборка лежат рядом и имеют одно и то же имя. Возможно, это очевидные моменты, но не для меня ;)

Итак, у нас есть сборка с именем, например, MyCoolApp.dll. Она развивается, как-то обновляется (будем считать, практически вручную) - не суть. В какой-то момент рядом кладется файл MyCoolApp.cuix.

И ситуация так сложилась, что про ресурсные dll как-то и не вспомнили (ну или не стали собирать).

И вот теперь - voilà! - загружаем меню. Отлично, потом грузим dll, пока ничего необычного. dll заблокирована, ее нельзя переместить, удалить, переименовать...

Но что будет, если меню загружено, а dll еще нет? Ну не было еще команды _.netload? Ведь вроде бы можно взять и удалить / переименовать / переместить dll. Ага, щщас! Переименовать-то еще и можно, а вот удалить - фигушки. ProcessExplorer четко и внятно показывает, что mycoolapp.dll заблокирована процессом acad.exe

При этом если выгрузить cuix, то dll моментально освобождается!

Просто предположения
Я так полагаю, что механизм, обеспечивающий подгрузку ресурсов из соответствующих dll, пытается обратиться к этой dll, видит, что это “не то”, и отворачивается. Забывая при этом освободить dll

Как вывод - не стоит делать свои сборки одноименными с файлами меню. Даже если очень хочется ;)



Поделитесь своим мнением


Я не робот.