Приветствую всех на данном форуме!
Spoiler:
https://adn-cis.org/forum/index.php?topic=9847.15Это изучил/поэкспериментировал насколько это было возможно. Не всё, что там писали я понял до конца в силу хаотичности сообщений и в силу своей квалификации.
Вот это:
https://adn-cis.org/forum/index.php?topic=1110.msg9973#msg9973также читал, применил. Хотя когда сделал понял, что скорее всего к моей проблеме это имеет посредственное отношение.
Начну излагать проблему из глубин:
Изначально разработал приложение на WPF (WPF форма) с EntityFrameWorkCore для администрирования базы данных (далее - БД)(прямо скажем, приложение не сложное, если не сказать, что примитивное). Опыт работы с БД был и раньше, но "в лоб" - через ADO DB и запросы прямые запросы SQL.
Конечно, вариант с EntityFrameWorkCore мне понравился куда больше и я решил такое приложение внедрить в dll под AutoCad.
Для корректной работы EntityFrameWorkCore требуются дополнительные разные сборки:
На картинке показаны далеко не все.
Собственно никаких проблем до момента загрузки этой dll в AutoCad (пробовал на AutoCad 2022, AutoCad 2023) не возникает.
Далее всё как обычно: NETLOAD - >выбираю dll -> и вот это:
Команда: NETLOAD
Не удалось загрузить сборку. Сведения об ошибке: System.IO.FileNotFoundException: Не удалось загрузить файл или сборку "System.Threading.Tasks.Extensions, Version=4.2.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51" либо одну из их зависимостей. Не удается найти указанный файл.
Имя файла: 'System.Threading.Tasks.Extensions, Version=4.2.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'
в System.Reflection.RuntimeAssembly.GetExportedTypes(RuntimeAssembly assembly, ObjectHandleOnStack retTypes)
в System.Reflection.RuntimeAssembly.GetExportedTypes()
в Autodesk.AutoCAD.ApplicationServices.AutoCADApplicationHolder.Initialize(Assembly assembly)
в Autodesk.AutoCAD.ApplicationServices.ExtensionLoader.ProcessAssembly(Assembly assembly)
=== Информация о состоянии предварительной привязки ===
Журнал: DisplayName = System.Threading.Tasks.Extensions, Version=4.2.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
(Fully-specified)
Журнал: Appbase = file:///C:/Program Files/Autodesk/AutoCAD 2023/
Журнал: Initial PrivatePath = NULL
Вызов сборки: Microsoft.Bcl.AsyncInterfaces, Version=1.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51.
===
Журнал: данная привязка начинается в контексте загрузки LoadFrom.
Предупреждение: собственный не будет проверен в контексте LoadFrom. Собственный образ будет проверен только в контексте загрузки по умолчанию, например, при помощи Assembly.Load().
Журнал: используется файл конфигурации приложения: C:\Program Files\Autodesk\AutoCAD 2023\acad.exe.Config.
Журнал: используется файл конфигурации главного узла:
Журнал: используется файл конфигурации компьютера из C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config.
Журнал: ссылка после применения политики: System.Threading.Tasks.Extensions, Version=4.2.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
Журнал: попытка скачивания нового URL file:///C:/Program Files/Autodesk/AutoCAD 2023/System.Threading.Tasks.Extensions.DLL.
Журнал: попытка скачивания нового URL file:///C:/Program Files/Autodesk/AutoCAD 2023/System.Threading.Tasks.Extensions/System.Threading.Tasks.Extensions.DLL.
Журнал: попытка скачивания нового URL file:///C:/Program Files/Autodesk/AutoCAD 2023/System.Threading.Tasks.Extensions.EXE.
Журнал: попытка скачивания нового URL file:///C:/Program Files/Autodesk/AutoCAD 2023/System.Threading.Tasks.Extensions/System.Threading.Tasks.Extensions.EXE.
Журнал: попытка скачивания нового URL file:///C:/Users/localuser/Desktop/C#/SO/Test/Test_EFW_NEWFramework/Test_EFW_NEWFramework/bin/Debug/System.Threading.Tasks.Extensions.DLL.
Предупреждение: при проверке имени сборки обнаружено несовпадение: Revision Number
Журнал: попытка скачивания нового URL file:///C:/Users/localuser/Desktop/C#/SO/Test/Test_EFW_NEWFramework/Test_EFW_NEWFramework/bin/Debug/System.Threading.Tasks.Extensions/System.Threading.Tasks.Extensions.DLL.
Журнал: попытка скачивания нового URL file:///C:/Users/localuser/Desktop/C#/SO/Test/Test_EFW_NEWFramework/Test_EFW_NEWFramework/bin/Debug/System.Threading.Tasks.Extensions.EXE.
Журнал: попытка скачивания нового URL file:///C:/Users/localuser/Desktop/C#/SO/Test/Test_EFW_NEWFramework/Test_EFW_NEWFramework/bin/Debug/System.Threading.Tasks.Extensions/System.Threading.Tasks.Extensions.EXE.
Разумеется, сам файл System.Threading.Tasks.Extensions.dll на месте.
Пробовал менять его свойства:
Конкретная версия: True/False (один и тот же результат - dll не загружается)
Копировать локально: True/False (один и тот же результат - dll не загружается)
Внедрить типы взаимодействия: True/False (до конца не разобрался что это, но при True сборка просто не компилируется)
Вот вроде бы я изложил всё, что делал и как экспериментировал.
Что не делал, а может быть стоит, рассчитываю получить совет:
вот тут:
1.https://adn-cis.org/forum/index.php?topic=9847.15сказано, что может быть такое, что приложение не загружается через NETLOAD, но загружается через add-in manifest. Как я это понял - через NETLOAD не загружается, а через BUNDLE да. И при этом требуется использовать Assembly.LoadFrom.
Правильно ли я понял? Тема, на которую я ссылаюсь посвящена Revit, мб есть различия? Если я понял правильно - то что конкретно и где нужно сделать с Assembly.LoadFrom? Автозагрузку (назовём её простой) я делать могу. Но те dll не требуют зависимостей (иных dll). Здесь вариант сложнее.
2.В логе от AutoCad есть вот такая строка:
Предупреждение: при проверке имени сборки обнаружено несовпадение: Revision NumberВозможно проблема в этом? Но я не нашёл где и как можно посмотреть эти самые версии. Точнее не так - везде, где это можно было я посмотреть - посмотрел:
ПКМ на dll -> Подробно - > Версия: там указано 4.6.28619.1
файл app.config:
<dependentAssembly>
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1" />
</dependentAssembly
Тут пробовал и менять и удалять - реакции никакой.
В диспетчере NuGet пакетов:
При этом лог AutoCad:
Имя файла: 'System.Threading.Tasks.Extensions, Version=4.2.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'И вот такого номера версии я вообще нигде не нашёл.
Сам файл System.Threading.Tasks.Extensions.dll указан в зависимостях для Microsoft.Bcl.AsyncInerfaces, который в свою очередь требуется для самого EntityFrameWorkCore.
Надеюсь на мудрый совет от магистров форума, потому что моих знаний (коих не так много) и моего терпения и желания пробить эту стену (коих в разы больше) не хватило.