Мне нужно получить полный путь acdbmgd.dll, что бы через отражение я создал экземпляр класса MLeader,
которого нет в AutoCAD 2006 и 2007.
Это потому из-за того, что подключив к моему проекту сборки acad 2006 компилятор не находит класс MLeader.
Я не хочу комментировать каждый раз код, когда делаю сборку своего проекта для acad 2006, 2007.
Класс MLeader в acad 2007,2006 работать не будет, просто мой алгоритм проигнорирует создание класса MLeader и все.
Использовав позднее связывание мне не нужно комментировать кусок кода.
Т.к. acdbmgd.dll должен быть там где и acad.exe, то достаточно получить путь к acad.exe.
Я пробовал класть acdbmgd.dll в другую папку класс не создается возникают ошибки,
так что правильнее, если они (dll и exe) буду в одной папке.
Вот пример кода:
Public Sub TEST
Dim path As String = sys_GetPath_FullName(System.Windows.Forms.Application.ExecutablePath)
Dim DllName As String = path & "\acdbmgd.dll"
Dim leader As Object = Create_Inst_ClassName(DllName, "Autodesk.AutoCAD.DatabaseServices.MLeader")
' делаю проверку, если экземпляр класса не создан
If leader Is Nothing Then Exit Sub
End Sub
' создание экземпляра класса по имени из файла dllFile
Public Function Create_Inst_ClassName(ByVal dllFile As String, _
ByVal ClassName As String) As Object
Try
With System.Reflection.Assembly.LoadFrom(dllFile)
Dim obj As Object = Activator.CreateInstance(.GetType(ClassName))
Return obj
End With
Catch ex As Exception
Return Nothing
End Try
End Function
' папка от полного имени файла
Public Shared Function sys_GetPath_FullName(ByVal FullName As String) As String
Dim strAppPath As String = FullName
Dim i As Long = strAppPath.Length - 1
Do Until strAppPath.Substring(i, 1) = "\"
i -= 1
Loop
strAppPath = strAppPath.Substring(0, i)
Return strAppPath
End Function
Саша, поменяй пожалуйста название темы на "Получить путь к acdbmgd.dll в NET без Interop"
что-то у меня не получается.