Вход на сайт
.Net - новая версия Dll heil
16.05.06 12:26
.Net - новая версия Dll heil...
Надеюсь, что те, кто работает с .Net, в курсе что там есть такая прелесть как GAP.
Для тех кто не знает - мелкософт пытается реализовать поддержку множественных вариантов библиотек, указывая системе какая именно версия должна использоваться с конкретной программой. Хранится, по идее, это все должно в этом самом GAPe...
Ну и как обычно - все хорошо, пока все хорошо... Но вот в пятницу пришлось попотеть до 22.00... а сегодня - снова та же проблема...
Суть. У меня, как вы знаете, код не пишется ручками, а генерится целиком приложение. Приложению нужна небольшая либа с враперами стандартных компонентов и тем что используется дополнительно. Кода там не много и он почти не меняется. Но все же иногда в систему вводится новые элементы и, соответственно, библиотека пополняется. Разумеется компилируется и используется новая версия. Разумеется, она прописывается в GAPe. Разумеется, там же в GAPe лежат и другие версии. И вот в пятницу это все слегка накрылось...
Накрылось элементарно - приложение начало валиться по ошибке. Детальное изучение показало, что где-то в недрах приложения не создается один из компонентов. Почему - не знаю. Решил все переделать, благо не занимает много времени - стандартным образом с нуля создал проект, перебросил конфигурацию (это пара XML-файлов), сгенерил проект, откомпилировал... Та же самая ошибка на том же самом месте.
Пробовал много чего и под конец решил прибить все либы связанные с проектом. Вычистил _всю_ систему от всех версий... А ошибка - никуда не делась. Еще раз акцептирую внимание - ошибка времени выполнения, т.е. .Net "видит" правильную либу с нужным компонентом на этапе трансляции, но в ран-тайме использует что-то другое... при том, что в системе присутствует только _одна_ версия либы...
Вообщем - настоящий DLL-heil от мелкомягких, только в новой обертке с версиями.
Если кто сталкивался с подобным - напишите, плс, как выходили из ситуации, бо проблемма хотя и решается шаманством - разовой заменой проекта с другой машины, но хотелось бы найти отколь ноги растут...
Надеюсь, что те, кто работает с .Net, в курсе что там есть такая прелесть как GAP.
Для тех кто не знает - мелкософт пытается реализовать поддержку множественных вариантов библиотек, указывая системе какая именно версия должна использоваться с конкретной программой. Хранится, по идее, это все должно в этом самом GAPe...
Ну и как обычно - все хорошо, пока все хорошо... Но вот в пятницу пришлось попотеть до 22.00... а сегодня - снова та же проблема...
Суть. У меня, как вы знаете, код не пишется ручками, а генерится целиком приложение. Приложению нужна небольшая либа с враперами стандартных компонентов и тем что используется дополнительно. Кода там не много и он почти не меняется. Но все же иногда в систему вводится новые элементы и, соответственно, библиотека пополняется. Разумеется компилируется и используется новая версия. Разумеется, она прописывается в GAPe. Разумеется, там же в GAPe лежат и другие версии. И вот в пятницу это все слегка накрылось...
Накрылось элементарно - приложение начало валиться по ошибке. Детальное изучение показало, что где-то в недрах приложения не создается один из компонентов. Почему - не знаю. Решил все переделать, благо не занимает много времени - стандартным образом с нуля создал проект, перебросил конфигурацию (это пара XML-файлов), сгенерил проект, откомпилировал... Та же самая ошибка на том же самом месте.
Пробовал много чего и под конец решил прибить все либы связанные с проектом. Вычистил _всю_ систему от всех версий... А ошибка - никуда не делась. Еще раз акцептирую внимание - ошибка времени выполнения, т.е. .Net "видит" правильную либу с нужным компонентом на этапе трансляции, но в ран-тайме использует что-то другое... при том, что в системе присутствует только _одна_ версия либы...
Вообщем - настоящий DLL-heil от мелкомягких, только в новой обертке с версиями.
Если кто сталкивался с подобным - напишите, плс, как выходили из ситуации, бо проблемма хотя и решается шаманством - разовой заменой проекта с другой машины, но хотелось бы найти отколь ноги растут...
NEW 16.05.06 15:52
в ответ digital_pilot 16.05.06 13:29
Наверное. Последний раз доки по организации .Net'a смотрел пару лет назад. Подзабывается.
Что до глюков - оно понятно, что что-то глючит по-черному. Остается выяснить - Что и Как с ним справится? - Пока удается убить глюк перетаскиванием проекта с другой машины, но это - шаманство, а нужно - решение...
Что до глюков - оно понятно, что что-то глючит по-черному. Остается выяснить - Что и Как с ним справится? - Пока удается убить глюк перетаскиванием проекта с другой машины, но это - шаманство, а нужно - решение...
NEW 17.05.06 16:24
в ответ Murr 16.05.06 12:26
Что дядюшка Билли большой чудак, на буковку 'Эм', разумеется, известно давно.
Но вот чего он наворотил в .Net - это вообще ни в какие ворота не лезет.
Разобрался я с описанной выше проблемой проблемой. Если у кого есть интерес
- можете попробовать угадать где была причина... После десятка обоснованных
предположений расскажу в чем именно была проблема...
Но вот чего он наворотил в .Net - это вообще ни в какие ворота не лезет.
Разобрался я с описанной выше проблемой проблемой. Если у кого есть интерес
- можете попробовать угадать где была причина... После десятка обоснованных
предположений расскажу в чем именно была проблема...
NEW 18.05.06 08:39
в ответ Murr 17.05.06 16:24
Номер версии автогенерился студией и в GAC устанавливались все версии.
Хотя может были грабли при генерации strong name.
На более абстрактном уровне подозреваю, что у МС устанавливался какой-то параметер по-умолчанию, причем предположения о значении этого параметра у программера существенно отличались от представлений МС, что же программеру надо.
Хотелось бы услышать горячо-холодно.
Хотя может были грабли при генерации strong name.
На более абстрактном уровне подозреваю, что у МС устанавливался какой-то параметер по-умолчанию, причем предположения о значении этого параметра у программера существенно отличались от представлений МС, что же программеру надо.
Хотелось бы услышать горячо-холодно.

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 ?
А какой эксепшн швыряется?
Я никогда не прописывал ничего в GAC, все всегдо локально.
в compile time должно собираться с #using "MyLib.Dll"
При исполнении тот же самы dll должен лежать в той же директории что и .exe и все.
Проблемы бывают только тогда, когда .dll по каким то причинам в памяти, и не дает себя периписать новой версией.
Какая у тебя версия .NET 2.0 или 1.1 ?
А какой эксепшн швыряется?
*Ъ...
NEW 19.05.06 01:22
в ответ AlterEgo 18.05.06 23:53
Не пользуюсь ссылками на конретную Dll в коде - вседа - референсе и усинг по наймспасу.
Фраймворк 1.1. Второй, говорят, глючит. Так что если будем пересаживаться - 2005+ с чем она там идет...
Ексептион, стандартный - объект не инстанцирован. Он действительно не инстансится...
У меня не ехе-шник. Собирается вэб-аппликатион - там только ДЛЛ...
Что странно - я и сам понимаю... Мало того - практически невоспроизводимо. По крайней мере - не получается повторить, после того вылечил...
Фраймворк 1.1. Второй, говорят, глючит. Так что если будем пересаживаться - 2005+ с чем она там идет...
Ексептион, стандартный - объект не инстанцирован. Он действительно не инстансится...
У меня не ехе-шник. Собирается вэб-аппликатион - там только ДЛЛ...
Что странно - я и сам понимаю... Мало того - практически невоспроизводимо. По крайней мере - не получается повторить, после того вылечил...
NEW 19.05.06 10:19
в ответ Tomasson 19.05.06 09:22
а где именно глючит?
-------
Эээ... не знаю. Пока боролся с описанным глюком - сносил Студию полностью и, поскольку доступен Фрейворк 2.0, задавал боссу вопрос - какой ставить? - ответ был - 1.1, т.к. 2.0 - глючит. Об деталях - не спрашивал, не до того было...
-------
Эээ... не знаю. Пока боролся с описанным глюком - сносил Студию полностью и, поскольку доступен Фрейворк 2.0, задавал боссу вопрос - какой ставить? - ответ был - 1.1, т.к. 2.0 - глючит. Об деталях - не спрашивал, не до того было...

NEW 19.05.06 10:24
в ответ Tomasson 19.05.06 10:16
так верни исправления назад :-Р
-------
Уже делал - ошибка невоспроизводится таким способом.
ты перед изменениями версии не сохраняешь?
-------
Сохраняю - VSS 6.0 на другой машине. Вернуть назад - можно. Только смысла нет - при откате компонета просто не будет в либе и посыпятся ошибки при компиляции.
-------
Уже делал - ошибка невоспроизводится таким способом.
ты перед изменениями версии не сохраняешь?
-------
Сохраняю - VSS 6.0 на другой машине. Вернуть назад - можно. Только смысла нет - при откате компонета просто не будет в либе и посыпятся ошибки при компиляции.
NEW 19.05.06 10:34
в ответ Tomasson 19.05.06 10:30
значит, ты нашел не все ошибки:-)
-------
Найти _все_ ошибки у Билли - это из области фантастики. Проще пыпытаться найти где у него их нету...
Разумеется Студия добила остатки глюка. Спасибо ей за это. Если бы она еще умудрялась не создавать этого же глюка...
-------
Найти _все_ ошибки у Билли - это из области фантастики. Проще пыпытаться найти где у него их нету...

Разумеется Студия добила остатки глюка. Спасибо ей за это. Если бы она еще умудрялась не создавать этого же глюка...

NEW 21.05.06 18:15
звездят они... если что и глючит, то 1.1.. точнее как, 1.0 был один большой глюк, 1.1 кое что подправили, но API осталось старое и ущербное.
2.0 действительно очень разумная "работа над ошибками", а студия 2005 просто намного лучше и удобней стала. Inteliisense, DataSet и Forms дизайнеры. В общем куча удовольстивия от работы.
1
в ответ Murr 19.05.06 01:22
В ответ на:
Фраймворк 1.1. Второй, говорят, глючит. Так что если будем пересаживаться - 2005+ с чем она там идет...
Фраймворк 1.1. Второй, говорят, глючит. Так что если будем пересаживаться - 2005+ с чем она там идет...
звездят они... если что и глючит, то 1.1.. точнее как, 1.0 был один большой глюк, 1.1 кое что подправили, но API осталось старое и ущербное.
2.0 действительно очень разумная "работа над ошибками", а студия 2005 просто намного лучше и удобней стала. Inteliisense, DataSet и Forms дизайнеры. В общем куча удовольстивия от работы.
1
*Ъ...
NEW 22.05.06 09:56
в ответ AlterEgo 21.05.06 22:02
Это класс занимающийся размещением виджетов в пределах заданного контейнера. Нужен для того, чтобы при изменении локали или размера шрифтов ничего никуда не уплывало.
Есть?
или по-прежнему убожество в виде якорей?
Есть?
или по-прежнему убожество в виде якорей?
Dropbox - средство синхронизации и бэкапа файлов.
NEW 22.05.06 12:36
в ответ voxel3d 22.05.06 09:56
если я тебя правильно понял и если это то, на что Симпл дал ссылку, то в .NET 2.0 есть FlowLayoutPanel control и TableLayoutPanel control
http://msdn2.microsoft.com/en-us/library/y62k236c(VS.80).aspx
http://msdn2.microsoft.com/en-us/library/system.windows.forms.tablelayoutpanel(V...
если упор на локализацию, то есть такие how to:
http://msdn2.microsoft.com/en-us/library/zcky5b93.aspx
...ну и т.д.: http://msdn2.microsoft.com/en-us/library/ms171691.aspx
Я с ними еще не работал, поетому ничего особенного не скажу.
Но еще при .net 1.1 у Petzold'a описывалось, как правильно работать с текстом в контролах. Если следовать его примерам, то ничего никуда не плывет:-), т.к. сначала измеряется текст, а потом в зависимости от его размера вырисовывается контрол/форма.
вопрос интересный:-), надо будет поискать в .NET 2.0 точное описание.
http://msdn2.microsoft.com/en-us/library/y62k236c(VS.80).aspx
http://msdn2.microsoft.com/en-us/library/system.windows.forms.tablelayoutpanel(V...
если упор на локализацию, то есть такие how to:
http://msdn2.microsoft.com/en-us/library/zcky5b93.aspx
...ну и т.д.: http://msdn2.microsoft.com/en-us/library/ms171691.aspx
Я с ними еще не работал, поетому ничего особенного не скажу.
Но еще при .net 1.1 у Petzold'a описывалось, как правильно работать с текстом в контролах. Если следовать его примерам, то ничего никуда не плывет:-), т.к. сначала измеряется текст, а потом в зависимости от его размера вырисовывается контрол/форма.
вопрос интересный:-), надо будет поискать в .NET 2.0 точное описание.
NEW 22.05.06 15:53
в ответ Murr 16.05.06 12:26
Ладушки, попробую описать что было.
Система - .Net 2003, VSS 6.0 на удаленном сервере. Нормальным образом работается с VSS. Помимо этого, при крупных изменениях, таких как добавление нового компонента, делается локальная копия кода в другой папке. Время от времени версионные папки стираются.
Все работает... пока не падает. В данном случае, насколько я понял, взглюкнул удаленный сервер с VSS и я решил поработать локально. Скопровал, без обраного перехода под удаленный VSS, папочку, потом переименовал... Работать продолжил с переименованной, туда же добавил новый компонент. В Студии все выглядело вполне прилично, но, как я понял, собирался проект из оригинальной папки - без дополнительного компонента.
Может что и напутал - повторить не удается - но что грабли были именно на связке VSS-.Net - 100%...
Система - .Net 2003, VSS 6.0 на удаленном сервере. Нормальным образом работается с VSS. Помимо этого, при крупных изменениях, таких как добавление нового компонента, делается локальная копия кода в другой папке. Время от времени версионные папки стираются.
Все работает... пока не падает. В данном случае, насколько я понял, взглюкнул удаленный сервер с VSS и я решил поработать локально. Скопровал, без обраного перехода под удаленный VSS, папочку, потом переименовал... Работать продолжил с переименованной, туда же добавил новый компонент. В Студии все выглядело вполне прилично, но, как я понял, собирался проект из оригинальной папки - без дополнительного компонента.
Может что и напутал - повторить не удается - но что грабли были именно на связке VSS-.Net - 100%...
<--- nobody
harmed in this action -->
NEW 22.05.06 17:18
Почему вы не применяете систему контроля версий? Только не говори мне, что VSS это система контроля версий...
в ответ Murr 22.05.06 15:53
В ответ на:
Все работает... пока не падает. В данном случае, насколько я понял, взглюкнул удаленный сервер с VSS и я решил поработать локально.
Все работает... пока не падает. В данном случае, насколько я понял, взглюкнул удаленный сервер с VSS и я решил поработать локально.
Почему вы не применяете систему контроля версий? Только не говори мне, что VSS это система контроля версий...
NEW 22.05.06 17:31
в ответ scorpi_ 22.05.06 17:18
Что имелось, то и юзаем.
В планах - переход на CVS (или как оно там). Основная проблема, насколько я понимаю, CVS (версия примерно 1999-2000 года) не предупреждает об "занятости" файла. Для малых групп это существенный минус. Остальное - вроде решается - есть плагины .Net для autocheout'а и т.п.
В планах - переход на CVS (или как оно там). Основная проблема, насколько я понимаю, CVS (версия примерно 1999-2000 года) не предупреждает об "занятости" файла. Для малых групп это существенный минус. Остальное - вроде решается - есть плагины .Net для autocheout'а и т.п.
NEW 22.05.06 17:40
в ответ Murr 22.05.06 17:31
Вообще-то это обычно не нужно http://svnbook.red-bean.com/nightly/ru/svn.basic.vsn-models.html#svn.basic.vsn-m..., но если очень надо, то можно и в CVS, и в Subversion. Вообще же смысла вам переходить на CVS нет, берите сразу Subversion.
NEW 22.05.06 18:00
в ответ scorpi_ 22.05.06 17:40
Cool. CVS фигуриовал в связи с наличием опыта работы с ним у моего босса. Если subversion не сложнее - стоит посмотреть и его.
Меня лично вопрос в чем хранить версии волнует мало - въелась привычка своевременно делать копию с нормальным идентификатором и коментом, да по возможности на другом диске или хотя бы разделе. Единственная проблема - я не один на проекте...

Меня лично вопрос в чем хранить версии волнует мало - въелась привычка своевременно делать копию с нормальным идентификатором и коментом, да по возможности на другом диске или хотя бы разделе. Единственная проблема - я не один на проекте...

NEW 22.05.06 19:09
в ответ scorpi_ 22.05.06 17:15
последняя версия, с которой работал была 1.4, но там тоже были такие layouts. Если не ошибаюсь, штук 5. Был там какой-то навороченный Grid... точно уже не помню:-).
Я показал то, что я вспомнил из .NET 2.0. Надо еще посмотреть классы подобные Grid layouts. Просто сейчас лень залазить в доку и искать весь сабж.
Но layouts в .NET 2.0 точно есть. Другое дело, все ли свойства соответствуют свойствам из других языков и все ли Grid layouts имеются в .NET 2.0
Я показал то, что я вспомнил из .NET 2.0. Надо еще посмотреть классы подобные Grid layouts. Просто сейчас лень залазить в доку и искать весь сабж.
Но layouts в .NET 2.0 точно есть. Другое дело, все ли свойства соответствуют свойствам из других языков и все ли Grid layouts имеются в .NET 2.0
NEW 27.05.06 21:34
Согласен, на то и есть в 2.0 теперь новые контролы.. Table i Flow контэйнеры, а так же понятия Padding для контэйнеров и Margin для всех контролов.
Я просто не могу себе представить чего вообще хотелось.
А потанцевав с бубном можно вообще что угодно наворотить с собственными контролами.
Что касается Intellisense ты его в VisualStudio 2005 пробывал ? две большие разницы с 2003. Работаешь шустро, показывает все что надо с самого начала(включая мемберы и локальные переменные) и рекомпиляции библиотек в проекте не требует. Все самодельные контролы/компоненты из проекта показываются в ToolBar, специально их не надо добавлять (жуткий гимор в 2003)
в ответ scorpi_ 22.05.06 17:15
В ответ на:
Это танцы с бубном. С нормальным лейаут-менеджером вс╦ это происходит автоматически.
Это танцы с бубном. С нормальным лейаут-менеджером вс╦ это происходит автоматически.
Согласен, на то и есть в 2.0 теперь новые контролы.. Table i Flow контэйнеры, а так же понятия Padding для контэйнеров и Margin для всех контролов.
Я просто не могу себе представить чего вообще хотелось.
А потанцевав с бубном можно вообще что угодно наворотить с собственными контролами.
Что касается Intellisense ты его в VisualStudio 2005 пробывал ? две большие разницы с 2003. Работаешь шустро, показывает все что надо с самого начала(включая мемберы и локальные переменные) и рекомпиляции библиотек в проекте не требует. Все самодельные контролы/компоненты из проекта показываются в ToolBar, специально их не надо добавлять (жуткий гимор в 2003)
*Ъ...
NEW 27.05.06 21:42
А в чем проблема, делаешь себе локальный бранч - когда готов - чекинишься. Конфликты вручную разгребаешь. В маленькой групее как раз проще, знаешь кто что делает и перед тем как начать править бензопилой и топором "чужой" код идешь к хозяину и обговариваешь, за одно многих "непоняток" можно избежать. У нас Rational ClearCase IBMовский. Мощьная зверюга, но от 3х начальников и она не спасет.
в ответ Murr 22.05.06 17:31
В ответ на:
В планах - переход на CVS (или как оно там). Основная проблема, насколько я понимаю, CVS (версия примерно 1999-2000 года) не предупреждает об "занятости" файла. Для малых групп это существенный минус. Остальное - вроде решается - есть плагины .Net для autocheout'а и т.п.
В планах - переход на CVS (или как оно там). Основная проблема, насколько я понимаю, CVS (версия примерно 1999-2000 года) не предупреждает об "занятости" файла. Для малых групп это существенный минус. Остальное - вроде решается - есть плагины .Net для autocheout'а и т.п.
А в чем проблема, делаешь себе локальный бранч - когда готов - чекинишься. Конфликты вручную разгребаешь. В маленькой групее как раз проще, знаешь кто что делает и перед тем как начать править бензопилой и топором "чужой" код идешь к хозяину и обговариваешь, за одно многих "непоняток" можно избежать. У нас Rational ClearCase IBMовский. Мощьная зверюга, но от 3х начальников и она не спасет.

*Ъ...
NEW 28.05.06 01:39
в ответ AlterEgo 27.05.06 21:42
перед тем как начать править бензопилой и топором "чужой" код идешь к хозяину и...
------
У меня - проще. Просто говоришь - этот код не соответствует оговоренным в начале разработки требованиям к кодированию - именование типов, именование переменных, табулирование... его "надо исправить и в другой раз писать аккуратно"... Обычно - проходит, благо говорить приходится непосредственно шефу - он кое-что пишет, довольно быстро, но не всегда правильно.
Что до непосредственно правки... Тут надо 20-ть раз подумать... и пожалуй - отложить в сторону... Бо, пишется не код, а управляемые шаблоны форм (плюс - шаблоны под бизнесобъекты, серверные процедуры, скрипты и доки) и желание "маленько поправить" может вылитсься в неизвестное количество рабочего времени - целиком проект уже никто не понимает, а избежать "обратных связей" не всегда удается. Так что частенько приходится ограничиваться констатацией неправильностей и идти дальше...
Конфликты вручную разгребаешь.
------
Угу... Потом всплывают уже исправленные баги. Не далее как вчера под вечер вывалился именно такой - забытое using и непойми что в качестве типа - ни только класс, ни полное квалифицированное имя, полуторочка такая... Пришлось снова напомнить об оговоренных стандартах кодинга...
Ну да ладно - уже поставил, пока локально, Subversion - как только закроем текущий стайдже - буду пробовать и если тянет - будем переходить...
------
У меня - проще. Просто говоришь - этот код не соответствует оговоренным в начале разработки требованиям к кодированию - именование типов, именование переменных, табулирование... его "надо исправить и в другой раз писать аккуратно"... Обычно - проходит, благо говорить приходится непосредственно шефу - он кое-что пишет, довольно быстро, но не всегда правильно.
Что до непосредственно правки... Тут надо 20-ть раз подумать... и пожалуй - отложить в сторону... Бо, пишется не код, а управляемые шаблоны форм (плюс - шаблоны под бизнесобъекты, серверные процедуры, скрипты и доки) и желание "маленько поправить" может вылитсься в неизвестное количество рабочего времени - целиком проект уже никто не понимает, а избежать "обратных связей" не всегда удается. Так что частенько приходится ограничиваться констатацией неправильностей и идти дальше...
Конфликты вручную разгребаешь.
------
Угу... Потом всплывают уже исправленные баги. Не далее как вчера под вечер вывалился именно такой - забытое using и непойми что в качестве типа - ни только класс, ни полное квалифицированное имя, полуторочка такая... Пришлось снова напомнить об оговоренных стандартах кодинга...
Ну да ладно - уже поставил, пока локально, Subversion - как только закроем текущий стайдже - буду пробовать и если тянет - будем переходить...
