(в acad 2013 Interop же нет) ?Эту фразу я не понял категорически. Вот так можно получить путь к acad.exe (это один из множества вариантов)
Если предположить, что файл acdbmgd.dll всегда находится в корне acad.exe. То нужно получить путь к acad.exe.Ты определись, тебе нужно получить путь к acad.exe (как ты пишешь в названии темы), или же тебе нужно получить полное имя файла acdbmgd.dll (как ты пишешь в первом сообщении темы)? Это "четыре совершенно разных человека".
C:\Program Files\Autodesk\AutoCAD 2009\AcdbMgd.dll
C:\Program Files\Autodesk\AutoCAD 2009
Если второй вариант, то я предпочитаю не полагаться на то совпадение, о котором ты упоминаешь.Тогда ты полагаешься на то, что реестр никто не правил ручками (это я про твой следующий код).
Тогда ты полагаешься на то, что реестр никто не правил ручками (это я про твой следующий код).Поскольку автодеск хранит эту информацию в реестре, то существует вероятность, что какой-то софт того же автодеска может этой информацией пользоваться и в случае изменения её "ручками" накроется медным тазом. Я исхожу из того, что это официальная информация, предоставляемая автодеском и здравомыслящий человек не будет править её в HKLM. Более того, в нормальных организациях юзеры не имеют прав админа.
Т.к. acdbmgd.dll должен быть там где и acad.exe, то достаточно получить путь к acad.exe.Я выше показал, как получить путь к acdbmgd.dll.
Я пробовал класть acdbmgd.dll в другую папку класс не создается возникают ошибки,У Autodesk они не поменяют своего места расположения с вероятностью 99,9%. Можно переложить их в др. каталог и всё будет работать при условии, что ты возьмёшь в свои руки поиск нужных ресурсов путём подписания на соответствующее событие. Я так нередко делаю, когда выношу свои общие библиотеки в некоторый каталог, дабы не дублировать их в каждом плагине.
так что правильнее, если они (dll и exe) буду в одной папке.
Это потому из-за того, что подключив к моему проекту сборки acad 2006 компилятор не находит класс MLeader.А не проще ли тогда воспользоваться условиями компиляции и исключать с помощью них код для версий, в которых он не должен работать?
Type.GetType("Autodesk.AutoCAD.DatabaseServices.MLeader");тогда уж так:
тогда уж так:Не могу проверить был ли этот метод в .NET 1.1 и 2.0
Код - C#: [Выделить]
Type.GetType("Autodesk.AutoCAD.DatabaseServices.MLeader", false, true);
безо всяких try\catch.