Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

.Net - новая версия Dll heil

406  1 2 3 все
Murr коренной житель16.05.06 12:26
Murr
NEW 16.05.06 12:26 
.Net - новая версия Dll heil...
Надеюсь, что те, кто работает с .Net, в курсе что там есть такая прелесть как GAP.
Для тех кто не знает - мелкософт пытается реализовать поддержку множественных вариантов библиотек, указывая системе какая именно версия должна использоваться с конкретной программой. Хранится, по идее, это все должно в этом самом GAPe...
Ну и как обычно - все хорошо, пока все хорошо... Но вот в пятницу пришлось попотеть до 22.00... а сегодня - снова та же проблема...
Суть. У меня, как вы знаете, код не пишется ручками, а генерится целиком приложение. Приложению нужна небольшая либа с враперами стандартных компонентов и тем что используется дополнительно. Кода там не много и он почти не меняется. Но все же иногда в систему вводится новые элементы и, соответственно, библиотека пополняется. Разумеется компилируется и используется новая версия. Разумеется, она прописывается в GAPe. Разумеется, там же в GAPe лежат и другие версии. И вот в пятницу это все слегка накрылось...
Накрылось элементарно - приложение начало валиться по ошибке. Детальное изучение показало, что где-то в недрах приложения не создается один из компонентов. Почему - не знаю. Решил все переделать, благо не занимает много времени - стандартным образом с нуля создал проект, перебросил конфигурацию (это пара XML-файлов), сгенерил проект, откомпилировал... Та же самая ошибка на том же самом месте.
Пробовал много чего и под конец решил прибить все либы связанные с проектом. Вычистил _всю_ систему от всех версий... А ошибка - никуда не делась. Еще раз акцептирую внимание - ошибка времени выполнения, т.е. .Net "видит" правильную либу с нужным компонентом на этапе трансляции, но в ран-тайме использует что-то другое... при том, что в системе присутствует только _одна_ версия либы...
Вообщем - настоящий DLL-heil от мелкомягких, только в новой обертке с версиями.
Если кто сталкивался с подобным - напишите, плс, как выходили из ситуации, бо проблемма хотя и решается шаманством - разовой заменой проекта с другой машины, но хотелось бы найти отколь ноги растут...
#1 
  digital_pilot авиатор х#ев16.05.06 13:29
16.05.06 13:29 
в ответ Murr 16.05.06 12:26

GAP - это у меня на фирме General Administrative Password как плэйсхолдер для обозначения пароля в доках, а ты все-таки наверно GAC имел в виду Никакой это не хэлл, это у тебя в системе глюки локальные :D
#2 
Murr коренной житель16.05.06 15:52
Murr
NEW 16.05.06 15:52 
в ответ digital_pilot 16.05.06 13:29
Наверное. Последний раз доки по организации .Net'a смотрел пару лет назад. Подзабывается.
Что до глюков - оно понятно, что что-то глючит по-черному. Остается выяснить - Что и Как с ним справится? - Пока удается убить глюк перетаскиванием проекта с другой машины, но это - шаманство, а нужно - решение...
#3 
Murr коренной житель17.05.06 16:24
Murr
NEW 17.05.06 16:24 
в ответ Murr 16.05.06 12:26
Что дядюшка Билли большой чудак, на буковку 'Эм', разумеется, известно давно.
Но вот чего он наворотил в .Net - это вообще ни в какие ворота не лезет.
Разобрался я с описанной выше проблемой проблемой. Если у кого есть интерес
- можете попробовать угадать где была причина... После десятка обоснованных
предположений расскажу в чем именно была проблема...
#4 
toptop знакомое лицо18.05.06 08:39
NEW 18.05.06 08:39 
в ответ Murr 17.05.06 16:24
Номер версии автогенерился студией и в GAC устанавливались все версии.
Хотя может были грабли при генерации strong name.
На более абстрактном уровне подозреваю, что у МС устанавливался какой-то параметер по-умолчанию, причем предположения о значении этого параметра у программера существенно отличались от представлений МС, что же программеру надо.
Хотелось бы услышать горячо-холодно.
#5 
Murr коренной житель18.05.06 09:14
Murr
NEW 18.05.06 09:14 
в ответ toptop 18.05.06 08:39
Холодно.
#6 
toptop знакомое лицо18.05.06 11:25
NEW 18.05.06 11:25 
в ответ Murr 18.05.06 09:14
Ну, если в ГАЦ устанавливалась правильная версия, значит приложение цепляло ДЛЛ откуда-то локально, а не из ГАЦ. В МСДН целая глава посвящена тому, как ищется прицепленная ДЛЛ и что должно быть прописано, установлено. Может в 2.0 чего-то упростили.
#7 
xDima завсегдатай18.05.06 12:06
xDima
NEW 18.05.06 12:06 
в ответ Murr 16.05.06 12:26
А если чисто случайно в юзинг стоит "систем.1.2.3....."
и что-то свое, но класс, метод и параметры по имени совпадают с систем.1.2.3...(типа гетАттрибут, гетНаме)
Такое могет быть?
Доктор сыт и больному легче.
#8 
Murr коренной житель18.05.06 13:39
Murr
NEW 18.05.06 13:39 
в ответ toptop 18.05.06 11:25
Используемая версия бралась из GAC...
#9 
Murr коренной житель18.05.06 13:43
Murr
NEW 18.05.06 13:43 
в ответ xDima 18.05.06 12:06
using cht.to - стоит, разумеется. Но namespace's нашей либы не совпадает ни с чем другим.
Тем более, ничего вида System.cht.to не используется - возможные проблемы исключили заранее.
#10 
  Tomasson мумеиси18.05.06 14:08
NEW 18.05.06 14:08 
в ответ Murr 18.05.06 13:43
короче, в чем проблема была то?
#11 
toptop знакомое лицо18.05.06 15:16
NEW 18.05.06 15:16 
в ответ Murr 18.05.06 13:39
Подлый админ шаловливыми ручками в mashine.config лазил?
#12 
Murr коренной житель18.05.06 16:41
Murr
NEW 18.05.06 16:41 
в ответ toptop 18.05.06 15:16
Подлый админ - в отпуске. Но, что характерно, проблема возникла на следующий день посленачала его отпуска. Правда, на той машине до которой, как и до моей, он не дотрагивается...
#13 
Murr коренной житель18.05.06 16:45
Murr
NEW 18.05.06 16:45 
в ответ Tomasson 18.05.06 14:08
Потерпи. Просто интересно кто как будет размышлять в попытке найти источник проблемы.
2All. Можно не просто гадать, но и задавать вопросы. Бо, идея не в том чтобы дать конккретный солюшник, а показать _как_ ИТшники пытаются решить проблему...
#14 
AlterEgo Чеширръ18.05.06 23:53
AlterEgo
NEW 18.05.06 23:53 
в ответ Murr 16.05.06 12:26
Вообще то очень странно.
Я никогда не прописывал ничего в GAC, все всегдо локально.
в compile time должно собираться с #using "MyLib.Dll"
При исполнении тот же самы dll должен лежать в той же директории что и .exe и все.
Проблемы бывают только тогда, когда .dll по каким то причинам в памяти, и не дает себя периписать новой версией.
Какая у тебя версия .NET 2.0 или 1.1 ?
А какой эксепшн швыряется?
*Ъ...
#15 
Murr коренной житель19.05.06 01:22
Murr
NEW 19.05.06 01:22 
в ответ AlterEgo 18.05.06 23:53
Не пользуюсь ссылками на конретную Dll в коде - вседа - референсе и усинг по наймспасу.
Фраймворк 1.1. Второй, говорят, глючит. Так что если будем пересаживаться - 2005+ с чем она там идет...
Ексептион, стандартный - объект не инстанцирован. Он действительно не инстансится...
У меня не ехе-шник. Собирается вэб-аппликатион - там только ДЛЛ...
Что странно - я и сам понимаю... Мало того - практически невоспроизводимо. По крайней мере - не получается повторить, после того вылечил...
#16 
  Tomasson мумеиси19.05.06 09:15
NEW 19.05.06 09:15 
в ответ Murr 19.05.06 01:22
Мало того - практически невоспроизводимо
не понял, ты ж, вроде, нашел ошибку. Как же тогда *невоспроизводимо*?
#17 
  Tomasson мумеиси19.05.06 09:20
19.05.06 09:20 
в ответ Murr 16.05.06 12:26
меня что удивило, так это *Вычистил _всю_ систему от всех версий... А ошибка - никуда не делась.*
Если раньше все работало, то ошибка вызвана только твоими добавлениями в библиотеку. Или?
#18 
  Tomasson мумеиси19.05.06 09:22
NEW 19.05.06 09:22 
в ответ Murr 19.05.06 01:22
Второй, говорят, глючит.
а где именно глючит?
#19 
  digital_pilot авиатор х#ев19.05.06 09:36
NEW 19.05.06 09:36 
в ответ Tomasson 19.05.06 09:22
а этого уже не говорят, гады :D
#20 
1 2 3 все