Schöck
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > .NET > Hello, World на AutoCAD .NET DLL

Hello, World на AutoCAD .NET DLL

Ответ
Поиск в этой теме
Непрочитано 06.04.2012, 12:18 #1
Hello, World на AutoCAD .NET DLL
Дмитрий Асташев
 
päällikön suunnittelijat
 
Pietari, Venäjä
Регистрация: 04.12.2010
Сообщений: 63

Коллеги, позвольте открыть новую тему по освоению AutoCAD .NET API DLL
Это многим должно быть интересно. Как правило, первый - шаг самый сложный.

Первый вопрос: в презентации http://images.autodesk.com/emea_apac...12-russian.zip упоминаются папки inc, inc-win32, inc-x64, samples.
Где их взять? Если они различны для разных версий, то где взять для 2009?

При пошаговом воспроизведении примера Lab1 из архива и попытке загрузки в AutoCAD выдается сообщение
Cannot load assembly. Error details: System.BadImageFormatException: Could not
load file or assembly 'file:///D:\XXXX\XXXX.dll' or one of
its dependencies. This assembly is built by a runtime newer than the currently
loaded runtime and cannot be loaded.
File name: 'file:///D:\XXXX\XXXX.dll'
at System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase,
Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark,
Boolean throwOnFileNotFound, Boolean forIntrospection)
at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef,
Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
at System.Reflection.Assembly.LoadFrom(String assemblyFile)
at Autodesk.AutoCAD.Runtime.ExtensionLoader.Load(String fileName)
at loadmgd()
В системе Framework 4.0

Последний раз редактировалось Дмитрий Асташев, 06.04.2012 в 12:28.
Просмотров: 6570
 
Непрочитано 06.04.2012, 12:52
1 | #2
Stierlitz

строительное проектирование
 
Регистрация: 01.05.2008
Новосибирск
Сообщений: 4,129


могу ошибаться, но фреймворки не заменяемы старшей версией

в разговоре с одним программистом как-то выяснил
Stierlitz вне форума  
 
Автор темы   Непрочитано 06.04.2012, 13:11
#3
Дмитрий Асташев

päällikön suunnittelijat
 
Регистрация: 04.12.2010
Pietari, Venäjä
Сообщений: 63


guliaevskij
компиляция с использованием Framework 3.5 предупреждений не дает, но и не помогает, сообщение об ошибке при загрузке остается.

При использовании более ранних версий Framework появляются предупреждения типа:

Цитата:
vbc : warning BC40057: Namespace or type specified in the project-level Imports 'System.Xml.Linq' doesn't contain any public member or cannot be found. Make sure the namespace or the type is defined and contains at least one public member. Make sure the imported element name doesn't use any aliases.
vbc : warning BC40057: Namespace or type specified in the project-level Imports 'System.Linq' doesn't contain any public member or cannot be found. Make sure the namespace or the type is defined and contains at least one public member. Make sure the imported element name doesn't use any aliases.
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1360,9): warning MSB3267: The primary reference "System.Core", which is a framework assembly, could not be resolved in the currently targeted framework. ".NETFramework,Version=v3.0". To resolve this problem, either remove the reference "System.Core" or retarget your application to a framework version which contains "System.Core".
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1360,9): warning MSB3268: The primary reference "System.Xml.Linq" could not be resolved because it has an indirect dependency on the framework assembly "System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" which could not be resolved in the currently targeted framework. ".NETFramework,Version=v3.0". To resolve this problem, either remove the reference "System.Xml.Linq" or retarget your application to a framework version which contains "System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1360,9): warning MSB3268: The primary reference "System.Data.DataSetExtensions" could not be resolved because it has an indirect dependency on the framework assembly "System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" which could not be resolved in the currently targeted framework. ".NETFramework,Version=v3.0". To resolve this problem, either remove the reference "System.Data.DataSetExtensions" or retarget your application to a framework version which contains "System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1360,9): warning MSB3267: The primary reference "System.Xml.Linq", which is a framework assembly, could not be resolved in the currently targeted framework. ".NETFramework,Version=v3.0". To resolve this problem, either remove the reference "System.Xml.Linq" or retarget your application to a framework version which contains "System.Xml.Linq".
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1360,9): warning MSB3267: The primary reference "System.Data.DataSetExtensions", which is a framework assembly, could not be resolved in the currently targeted framework. ".NETFramework,Version=v3.0". To resolve this problem, either remove the reference "System.Data.DataSetExtensions" or retarget your application to a framework version which contains "System.Data.DataSetExtensions".
ошибка при загрузке остается.

Последний раз редактировалось Кулик Алексей aka kpblc, 06.04.2012 в 15:18.
Дмитрий Асташев вне форума  
 
Непрочитано 06.04.2012, 13:37
1 | #4
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 36,871


*mgd.dll из нормального AutoCAD'a подключены? И им установлено copylocal = false?
Цитата:
Сообщение от Дмитрий Асташев Посмотреть сообщение
поминаются папки inc, inc-win32, inc-x64, samples.
Из ObjectARX SDK. Хотя для .net-разработки нужны прежде всего acdbmgd.dll и acmgd.dll, насколько я помню.
Цитата:
Сообщение от Дмитрий Асташев Посмотреть сообщение
где взять для 2009?
В каталоге установки AutoCAD 2009.
Андрей Бушман (hwd) где-то писал насчет использования .NET 4.0 внутри AutoCAD, требующих более ранние версии .NET.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 06.04.2012, 14:30
1 | #5
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Андрей Бушман (hwd) где-то писал насчет использования .NET 4.0 внутри AutoCAD, требующих более ранние версии .NET.
О версиях .Net Framework, об отладке (см. п.5).
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 06.04.2012, 14:46
#6
Дмитрий Асташев

päällikön suunnittelijat
 
Регистрация: 04.12.2010
Pietari, Venäjä
Сообщений: 63


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
mgd.dll из нормального AutoCAD'a подключены? И им установлено copylocal = false?
да, установлены acmgd.dll и acdbmgd.dll из C:\Program Files\AutoCAD 2009\
copylocal = false установлено.
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Из ObjectARX SDK.
на странице SDK http://usa.autodesk.com/adsk/servlet...3112&id=785550 можно получить SDK только для версий, начиная с 2011.
Где можно взять SDK для более ранних версий?
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
В каталоге установки AutoCAD 2009
Там ничего похожего не нашел.
Дмитрий Асташев вне форума  
 
Непрочитано 06.04.2012, 17:10
1 | #7
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,283
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Дмитрий Асташев Посмотреть сообщение
Где можно взять SDK для более ранних версий?
Здесь.
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 06.04.2012, 17:56
#8
Дмитрий Асташев

päällikön suunnittelijat
 
Регистрация: 04.12.2010
Pietari, Venäjä
Сообщений: 63


Спасибо, Александр!
Там написано, что нужна Visual Studio 2005 SP1 Будет ли работать с Visual Studio 2010?
Дмитрий Асташев вне форума  
 
Непрочитано 06.04.2012, 18:02
1 | #9
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,283
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Дмитрий Асташев Посмотреть сообщение
Там написано, что нужна Visual Studio 2005 SP1 Будет ли работать с Visual Studio 2010?
VS 2005 SP1 нужна для чистого ObjectARX (т.е. native C++), а не для .NET API
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 06.04.2012, 19:33
#10
Дмитрий Асташев

päällikön suunnittelijat
 
Регистрация: 04.12.2010
Pietari, Venäjä
Сообщений: 63


Переустановил библиотеки из
C:\ObjectARX 2009\inc-x64\AcMgd.dll
C:\ObjectARX 2009\inc-x64\AcDbMgd.dll
copylocal = false установлено.
Framework 3.5
AutoCAD 2009
Visual Studio 2010
эффект тот же: сообщение "This assembly is built by a runtime newer than the currently
loaded runtime and cannot be loaded."
После чего устанавливаем разрешение на запись C:\Program Files\AutoCAD 2009\acad.exe.config
вносим изменения в acad.exe.config
как описано в https://sites.google.com/site/bushmansnetlaboratory/faq
то есть устанавливаем
<supportedRuntime version="v3.5"/>
И происходит чудо!

Здравствуй, Мир!

Спасибо всем. Продолжение следует.

Последний раз редактировалось Дмитрий Асташев, 06.04.2012 в 19:57.
Дмитрий Асташев вне форума  
 
Непрочитано 07.04.2012, 15:24
1 | #11
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Дмитрий Асташев Посмотреть сообщение
Продолжение следует.
и это пугает...
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 04.09.2012, 19:29
#12
Дмитрий Асташев

päällikön suunnittelijat
 
Регистрация: 04.12.2010
Pietari, Venäjä
Сообщений: 63


2013 требует еще AcCoreMgd, который лежит в ....\ObjectARX 2013\inc\AcCoreMgd.dll
Дмитрий Асташев вне форума  
 
Непрочитано 04.09.2012, 23:16
#13
Modis


 
Регистрация: 12.06.2010
Липецк, Москва
Сообщений: 534


Дмитрий Асташев, А зачем вообще нужно качать ObjectARX SDK? Если только для "посмотреть примеры"
З.Ы. С вопросами (да и поиском готовых ответов) по .Net лучше сюда - там больше инфы, хотя здесь больше пользователей. ИМХО
Modis вне форума  
 
Автор темы   Непрочитано 05.09.2012, 00:49
#14
Дмитрий Асташев

päällikön suunnittelijat
 
Регистрация: 04.12.2010
Pietari, Venäjä
Сообщений: 63


Цитата:
Сообщение от Modis Посмотреть сообщение
А зачем вообще нужно качать ObjectARX SDK?
Хм. Хороший вопрос.
Во-первых, там презентация есть, по крайней мере, для первых шагов все расписано.
Во-вторых, там лежат исходники, которые можно поковырять.
В-третьих, там лежат файлы acdbmgd.dll и acmgd.dll которые, здесь могу ошибиться, чем-то отличаются одноименных из корня Акада.
Спасибо за приглашение, Modis!
Дмитрий Асташев вне форума  
 
Непрочитано 05.09.2012, 00:55
#15
Modis


 
Регистрация: 12.06.2010
Липецк, Москва
Сообщений: 534


Цитата:
Сообщение от Дмитрий Асташев Посмотреть сообщение
Во-первых, там презентация есть, по крайней мере, для первых шагов все расписано.
Во-вторых, там лежат исходники, которые можно поковырять.
Ну это как я и сказал - "посмотреть примеры"
Цитата:
Сообщение от Дмитрий Асташев Посмотреть сообщение
В-третьих, там лежат файлы acdbmgd.dll и acmgd.dll которые, здесь могу ошибиться, чем-то отличаются одноименных из корня Акада.
Ну-ну-ну! Фу! Такие гадости говорить нельзя!!! Ладно, глумлюсь - я не профи, но не трудно догадаться, что ничем они не отличаются ))
Modis вне форума  
 
Непрочитано 05.09.2012, 01:07
#16
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 36,871


Насколько я помню, как раз отличаются - в ObjectARX фактически стоят "заглушки", а в AutoCAD - реальные dll.
Могу ошибаться
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 05.09.2012, 01:10
#17
Modis


 
Регистрация: 12.06.2010
Липецк, Москва
Сообщений: 534


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Насколько я помню, как раз отличаются - в ObjectARX фактически стоят "заглушки", а в AutoCAD - реальные dll.
Могу ошибаться
А зачем тогда в SDK делать файлы, отличные от акадовских, если dll'ка будет работать именно с акадовскими?
Нет, я не спорю - может и отличаются, просто моя логика сломалась
Modis вне форума  
 
Автор темы   Непрочитано 05.09.2012, 06:11
#18
Дмитрий Асташев

päällikön suunnittelijat
 
Регистрация: 04.12.2010
Pietari, Venäjä
Сообщений: 63


Цитата:
Сообщение от Modis Посмотреть сообщение
А зачем тогда в SDK делать файлы, отличные от акадовских, если dll'ка будет работать именно с акадовскими?
Заменил референсы файлами из акад. Все работает точно так же.
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
в ObjectARX фактически стоят "заглушки", а в AutoCAD - реальные dll.
Сравнил бинарно. В поставке SDK файлы чуть менее чем полностью пустые. AcMgd имеет еще и другой тип EOL.
Коллеги, вы оба правы
Дмитрий Асташев вне форума  
 
Непрочитано 05.09.2012, 09:06
#19
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,283
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Modis Посмотреть сообщение
А зачем тогда в SDK делать файлы, отличные от акадовских, если dll'ка будет работать именно с акадовскими?
Нет, я не спорю - может и отличаются, просто моя логика сломалась
Затем, например, что у программиста может быть не установлен AutoCAD, а собрать свою .NET-сборку нужно. Алексей прав - в составе ObjectARX заглушки и именно поэтому нужно CopyLocal устанавливать в False, чтобы при работе использовались dll-ки из самого AutoCAD.
Александр Ривилис вне форума  
 
Непрочитано 05.09.2012, 09:37
#20
Modis


 
Регистрация: 12.06.2010
Липецк, Москва
Сообщений: 534


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
Затем, например, что у программиста может быть не установлен AutoCAD, а собрать свою .NET-сборку нужно. Алексей прав - в составе ObjectARX заглушки и именно поэтому нужно CopyLocal устанавливать в False, чтобы при работе использовались dll-ки из самого AutoCAD.
Уж извините за назойливость и оффтоп, но... заглушки - это что такое?
Modis вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > .NET > Hello, World на AutoCAD .NET DLL

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какой AutoCAD использовать ? denes AutoCAD 55 12.09.2011 14:29
Net. Создание и модификация материала Павлюкас Готовые программы 27 08.12.2010 10:17
Правило формирование записей в реестре об установленных обновлениях для AutoCAD и его вертикальных решений. hwd Программирование 8 30.09.2010 15:07
Где в реестре хранится информация о том, что в системе когда-то был установлен AutoCAD? Archeo AutoCAD 12 14.10.2009 15:24
Проблемы с .NET v2 в Autocad 2006 (acad.exe.config)... Chief Justice AutoCAD 2 12.08.2006 12:44