Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
 Assembly Hell ?  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 6219
Это не вопрос, поскольку причина мне ясна.
Но не понимаю, почему это возможно в принципе?

Была жила программа - .net4 + несколько библиотечных ассембликов (в зависимостях прописаны). Я ее обновил, в т.ч библиотеки были перекомпилированы без изменений (и исходников и, кажется, компилятора с точностью до сервис пака).

Но при обновлении, один из ассембликов (.dll) забыли скопировать и обновить.

Итого, программа запускается, но вылетает. В журнале виндовс - что то типа IOError - file not found, но в стектрейсе который в этом же сообщении, вызов идет из необновленного ассемблика. Т.е он загрузился, но работать по нормальному отказался.

Что еще за ещтвоюмедь ??

ИМХО, если ассемблик по версии не годится - ругнулось бы при его загрузке/линковке. А если годится - то должно было отработать без проблем. Это DLLhell в реинкарнации ?

Копии до/после обновления я снял, если не забыл до обновы - возможно, получится воспроизвести.
24 июн 18, 23:58    [21517440]     Ответить | Цитировать Сообщить модератору
 Re: Assembly Hell ?  [new]
hVostt
Member

Откуда:
Сообщений: 15624
Siemargl,

Это недостаток знаний, а не путанница.

Легко исправить, читайте: https://docs.microsoft.com/ru-ru/dotnet/framework/app-domains/create-and-use-strong-named-assemblies
25 июн 18, 00:30    [21517469]     Ответить | Цитировать Сообщить модератору
 Re: Assembly Hell ?  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 6219
hVostt,

читал эту хрень уже давно, какие противоречия ты видишь ?
25 июн 18, 00:43    [21517482]     Ответить | Цитировать Сообщить модератору
 Re: Assembly Hell ?  [new]
hVostt
Member

Откуда:
Сообщений: 15624
Siemargl
hVostt,

читал эту хрень уже давно, какие противоречия ты видишь ?


Противоречия в ожиданиях.
25 июн 18, 00:59    [21517492]     Ответить | Цитировать Сообщить модератору
 Re: Assembly Hell ?  [new]
hVostt
Member

Откуда:
Сообщений: 15624
Siemargl,

Если нужно, чтобы программа работала только с конкретными сборками конкретных версий, нужно это обеспечивать.

В теории, в рамках мажорной версии, должна обеспечиваться обратная совместимость.

Ещё сюда же напрашивается вопрос деплоя. Как это «забыли длл обновить»? Руками что ли всё делается? Ну.. это не хорошо, сетовать на некий «hell» очень неправильно, если не обеспечиваешь адкеватные и автоматизированные механизмы сборки и деплоя.
25 июн 18, 01:03    [21517495]     Ответить | Цитировать Сообщить модератору
 Re: Assembly Hell ?  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 6219
hVostt,

конечно, в данном случаем обновление было руками - иначе эта проблема бы не всплыла.

но непредсказуемое поведение то почему ?
особенно при том, что функционал ассемблика не менялся
25 июн 18, 01:13    [21517504]     Ответить | Цитировать Сообщить модератору
 Re: Assembly Hell ?  [new]
hVostt
Member

Откуда:
Сообщений: 15624
Siemargl,

В журнале виндовс - что то типа IOError - file not found


я, к огромному сожалению, не телепат. что конкретно послужило причиной вашей ошибки, я не знаю. учитывая, что вместо текста ошибки вы выложили «что-то типа».
25 июн 18, 01:17    [21517508]     Ответить | Цитировать Сообщить модератору
 Re: Assembly Hell ?  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 6219
hVostt
Siemargl,

В журнале виндовс - что то типа IOError - file not found


я, к огромному сожалению, не телепат. что конкретно послужило причиной вашей ошибки, я не знаю. учитывая, что вместо текста ошибки вы выложили «что-то типа».
Это неважно, ведь подмена пересобранной версией ассемблика без изменений ликвидирует проблему
25 июн 18, 01:22    [21517513]     Ответить | Цитировать Сообщить модератору
 Re: Assembly Hell ?  [new]
hVostt
Member

Откуда:
Сообщений: 15624
Siemargl
Это неважно, ведь подмена пересобранной версией ассемблика без изменений ликвидирует проблему


ну.. много доводилось подключать очень старые либы с зависимостями на старые версии библиотек, в новые проекты, где библиотеки были новые. и всё прекрасно работало.

поэтому причину именно вашей ошибки мне трудно определить. возможно, что изменения всё же были.
25 июн 18, 01:25    [21517515]     Ответить | Цитировать Сообщить модератору
 Re: Assembly Hell ?  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 5018
Siemargl,

Отчет fuslogw покажет, как всё было на самом деле. Пока что описанная картина - как в том анекдоте про "Рабинович по телефону напел".
Ну, и да, хотя бы post-build events+xcopy используйте, что ли.
25 июн 18, 08:15    [21517636]     Ответить | Цитировать Сообщить модератору
 Re: Assembly Hell ?  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 6219
Сон Веры Павловны,

Сейчас гонял на тестовой чистой машине и fuslogw не помог - по его данным, кроме .resources (которых и правда нет) - все загрузилось замечательнейшим образом.

В журнале событий такое (причем на win7 и win8 разные сообщения)
+
Win8
Сведения об исключении: System.BadImageFormatException
в моясофтинка.DataAccessLayer.CreateDatabaseObject(System.String)
в моясофтинка.DataAccessLayer..ctor(System.String)
в моясофтинка.MainWindow.MainWindow_Loaded(System.Object, System.Windows.RoutedEventArgs)

и доп.событие
Контейнер ошибки , тип 0
Имя события: CLR20r3
Отклик: Нет данных
Идентификатор CAB: 0

Сигнатура проблемы:
P1: моясофтинка.exe
P2: 1.0.0.0
P3: 595371f1
P4: моясофтинка
P5: 1.0.0.0
P6: 595371f1
P7: 81
P8: e
P9: System.BadImageFormatException
P10:


Win7
Stack:
at EntLibContrib.Data.OdpNet.OracleDatabase..ctor(System.String)
at моясофтинка.DataAccessLayer.CreateDatabaseObject(System.String)
at моясофтинка.DataAccessLayer..ctor(System.String)

и доп.событие
Контейнер ошибки , тип 0
Имя события: CLR20r3
Ответ: Нет данных
Идентификатор CAB: 0

Сигнатура проблемы:
P1: моясофтинка.exe
P2: 1.0.6388.21840
P3: 595371f1
P4: Oracle.DataAccess
P5: 4.112.3.0
P6: 5040bb7d
P7: 767
P8: cd
P9: Oracle.DataAccess.Client.Oracle
P10:

Oracle.DataAccess.dll (про который Win8 вообще промолчала) - каким то особым образом, невидимым для fuslogw (скорее всего это уже неуправляемый код), пытается подгрузить клиентские dll и падает при их отсутствии (причем мне этот Иксепшн не долетает).

В общем, какое то чудо - потому что на проблемной машине, где все и началось, и клиент нужный был, и версии ассембликов одинаковые (я побайтно сравнил). Единственный вариант - побился файлик самого ассемблика.
25 июн 18, 17:00    [21519216]     Ответить | Цитировать Сообщить модератору
 Re: Assembly Hell ?  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 5018
Siemargl
BadImageFormatException

Эта ошибка - ошибка несоответствия разрядности загружаемой сборки или нативной бибилиотеки разрядности самого приложения. Учитывая, что соглано отчету fuslogw, все сборки загрузились нормально, и тот факт, что приложение работает с ораклом, предполагаю, что вызов рвался на попытке загрузки нативных компонентов ораклового клиента (oci.dll) - к этомум моменту сами дотнетовские сборки действительно могли загрузиться вполне нормально, и уже на рантайме, а не в процессе загрузки сборок, выкинуть BadImageFormatException. Проверяйте, какой разрядности у вас сам клиент, и какой разрядности сборки, использующие ODP.
26 июн 18, 06:40    [21520435]     Ответить | Цитировать Сообщить модератору
 Re: Assembly Hell ?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 2901
Siemargl
hVostt,

читал эту хрень уже давно, какие противоречия ты видишь ?


Чётко написал: документация от майкрософта - это беспробудная хрень, её даже читать не стоит.
Полезнее руками "ассемблики" тасовать
28 июн 18, 11:26    [21527762]     Ответить | Цитировать Сообщить модератору
 Re: Assembly Hell ?  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 6219
Ролг Хупин
Siemargl
hVostt,

читал эту хрень уже давно, какие противоречия ты видишь ?


Чётко написал: документация от майкрософта - это беспробудная хрень, её даже читать не стоит.
Полезнее руками "ассемблики" тасовать
ну понято, учебники надо читать, но проблема была не в версиях.
28 июн 18, 12:39    [21528071]     Ответить | Цитировать Сообщить модератору
 Re: Assembly Hell ?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 2901
Siemargl
Ролг Хупин
пропущено...


Чётко написал: документация от майкрософта - это беспробудная хрень, её даже читать не стоит.
Полезнее руками "ассемблики" тасовать
ну понято, учебники надо читать, но проблема была не в версиях.


учебники и документация - это разные вещи
28 июн 18, 14:50    [21528680]     Ответить | Цитировать Сообщить модератору
Все форумы / WinForms, .Net Framework Ответить