Хорошо, у нас есть программа, которая подключается к системе ERP, и для создания клиента и сеанса мы использовать их библиотеки DLL.
Поэтому все, что нам нужно, уже существует в системе конечных пользователей, мы не делаем локальных копий и не публикуем какие-либо библиотеки DLL системы ERP.
Мой коллега обновил ERP систему на своем компьютере до новейшей версии.
В его системе все в порядке, никаких изменений кода не требуется.
Но если он сделает сборку проекта со своей машины, и мы попытаемся используйте его в системе клиента без новейшей версии системы ERP, мы получаем исключение, связанное с DLL.
Это тот же код, тот же проект, никаких изменений, но если мы заменим только Exe из моей системы (еще более старая версия ERP-система) с тем, который используется в его системе, он работает.
Таким образом, методы, которые мы напрямую используем из DLL, должны быть одинаковыми, поскольку у нас не было никаких изменений в нашем коде, но похоже, что что-то есть изменен код DLL, лежащий в основе методов, которые мы вызываем, и хотя мы используем версию DLL из системы конечного пользователя, кажется, что код не просто вызывает метод, а скорее напоминает обо всем, что стоит за ним, и ожидает того же.
Мой Exe работает как со старыми, так и с новыми версиями.
Итак, на данный момент, если я хочу создать новую версию и создать установщик, мне нужно создать файл Exe и передать его ему.
p>
Вот исключение, которое мы получаем с его файлом Exe.
Код: Выделить всё
System.TypeLoadException: The type "Sagede.OfficeLine.Engine.MandantBase" in the assembly "Sagede.OfficeLine.Engine, Version=9.0.0.0, Culture=neutral, PublicKeyToken=4ad8971889b881a9" could not be loaded.
at maniacConnect.Models.Helper.SageConnectionHelper.CloseConnection()
at maniacConnect.ViewModels.MainMenu.MainMenuViewModel.LoadSettingsData()
Мы проверили каждую ссылку, которую смогли найти в нашем проекте, чтобы убедиться, что ничего не упущено из виду.
Спросил Google и ИИ нашел решение, но не смог найти ничего о подобном поведении.
Мы ожидаем, что не получим никаких исключений, связанных с DLL, поскольку мы используем DLL с компьютера конечного пользователя.
Подробнее здесь: https://stackoverflow.com/questions/788 ... e-executin