powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Помогите пожалуйста разобраться с версиями - общие сборки в GAC
14 сообщений из 14, страница 1 из 1
Помогите пожалуйста разобраться с версиями - общие сборки в GAC
    #32941809
вопрос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делаю общую сборку sharedA.dll
Помещаю её в GAC.
верcия 1.0.1887.28631

Делаю клиента, использующего общую сборку sharedA.dll
Компилирую его с версией 1.0.1887.28631
Работает.

Перекомпилирую sharedA.dll
Теперь у нее версия 1.0.1887.29118
Перекомпилирую клиента, теперь он ссылается на sharedA.dll 1.0.1887.29118

Удаляю локальную копию sharedA.dll версии 1.0.1887.29118
Теперь она есть только в GAC версии 1.0.1887.28631
Клиент не запускается, говорит, сборка не найдена.

Не могу понять - почему не запускается. Читаю Троелсена - там сказано важны только первые два числа - основной номер версии и дополнительный.
Но они то у меня и не меняются!
Если в GAC кидаю требуемую клиентом версию - всё снова работает.
Еще помогло это :

Код: plaintext
1.
2.
<bindingRedirect oldVersion="1.0.1887.29118"
                             newVersion="1.0.1887.28631"/>
Но это не совсем ведь то, что нужно.
Подскажите, что не так делаю,пожалуйста.
...
Рейтинг: 0 / 0
Помогите пожалуйста разобраться с версиями - общие сборки в GAC
    #32941935
Фотография Лиман Артём
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
отвечу может не по существу: есть такой чувак Д. Рихтером зовут, так вот, в его книге по .НЕТу есть целая глава посвященная версионности сборок. Кстати там господин Рихтер указывает на один маленький недостаток студии, а именно генерация файла манифеста с такой строчечкой <Assembly: AssemblyVersion("1.0.*")> и в ней то вся загвоздочка. При новой компиляции всегда будет генерироваться новая версия, которая может быть не совместима для программ скомпилированной с другой версией, отсюдаго и гиморой.
Что б самому контролировать версии нужно строго прописать
<Assembly: AssemblyVersion("1.1.0")>
тода никакая перекомпиляция тебе не испугает))
...
Рейтинг: 0 / 0
Помогите пожалуйста разобраться с версиями - общие сборки в GAC
    #32941969
Bigheadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вы сравните имя сборок (FullName). (Ведь CLR ищет сборку по ее FullName.) В них входит полная версия, включая Minor version и revision number.
Либо вы не так поняли Троелсена, либо что-то еще.

Соотв. топики в мсдн:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconHowRuntimeLocatesAssemblies.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconside-by-sideexecutionfundamentals.asp

2 Лиман Артём.
Принудительная фиксация версии сборки не есть панацея. Версионность была придумана не для того, чтобы программисты ею не пользовались. Некорректная реализация студией? Пожалуй, да. В таком случае вы должны вручную следить за версиями сборок.
...
Рейтинг: 0 / 0
Помогите пожалуйста разобраться с версиями - общие сборки в GAC
    #32941983
Bigheadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати при просмотре GAC среда не зря отображает все 4 составляющих версии. Если бы роль играли только 2, то зачем их все отображать?
Собственно при просмотре GAC можно увидеть те 4 составляющие, которые и определяют имя сборки:
1) имя файла сборки без расширения (без dll/exe)
2) версия сборки
3) Locale (Culture)
4) Public Key Token
...
Рейтинг: 0 / 0
Помогите пожалуйста разобраться с версиями - общие сборки в GAC
    #32942044
Фотография Лиман Артём
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bigheadman2 Лиман Артём.
Принудительная фиксация версии сборки не есть панацея. Версионность была придумана не для того, чтобы программисты ею не пользовались. Некорректная реализация студией? Пожалуй, да. В таком случае вы должны вручную следить за версиями сборок.

да, но не нужно давать студии при каждом внесении изменений, которые не скажуться на совместимости, изменять номер версии, иначе будет такая ситуация как у автора, у меня она кстати тоже была, вовремя избавился.
Версия должна менятся осознанно и программистом - это факт.
...
Рейтинг: 0 / 0
Помогите пожалуйста разобраться с версиями - общие сборки в GAC
    #32942215
вопрос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ребят, спасибо большое!
извиняюсь за ламерские вопросы - токо изучаю.

ща буду вкуривать ссылки Bigheadman
пока вкуриваю - я хотел уточнить.

вообще мне нужно вот что.
я пишу котролы для хостинга их в IE, контролы эти грузятся с сервера соответственно.

но часть функционала выношу в общие сборки и устанавливаю их в GAC.
зачем это нужно - ну , пока например для того, чтобы печатать на клиенте.
потому что если я обращаюсь к печати из контрола, который хостится в IE, то получаю отлуп - прав у IE недостаточно.
Чтобы такого не было, контрол обращается к общей сборке, лежащей в GAC на клиенте. И уже код в общей сборке печатает, например, то, что сказали.

И теперь ситуация - если контрол, который я хощу в IE изменился, то есть требует более новую версию общей сборки - можно ли заставить его пользоваться уже имеющейся в GAC старой сборкой?
но не принудительно указывая версию сборки, а чтобы он находил например самый последний по версиям.
Это вообще возможно? В логике нет затыков? И куда копать, если возможно?
Спасибо, пошел курить ссылки. В Рихтера загляну обязательно.
...
Рейтинг: 0 / 0
Помогите пожалуйста разобраться с версиями - общие сборки в GAC
    #32942219
вопрос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
принудительная фиксация версий точно не подходит
но за совет спасибо, просто, кажется, не тот случай
...
Рейтинг: 0 / 0
Помогите пожалуйста разобраться с версиями - общие сборки в GAC
    #32942247
Фотография Лиман Артём
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вопроспринудительная фиксация версий точно не подходит
но за совет спасибо, просто, кажется, не тот случай

если не использовать редирект в файле настройки, то никак - всегда будет нужна та версия, с которой была скомпилирована сборка, так как это фиксируется на уровне метаданных сборки.
Если нужно последнюю, то вроде в редиректе можна задавать промежуток версий, укажи его с запасом и, думаю, будет браться последняя. Хотя я могу ошибаться..
...
Рейтинг: 0 / 0
Помогите пожалуйста разобраться с версиями - общие сборки в GAC
    #32944232
вопрос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артём!
Изучил ссылки, спасибо.

Как я понял - можно разруливать мою ситуацию либо
1) редиректом принудительным
2) рефлекшн, System.Reflection.Assembly.LoadWithPartialName()
оба они не подходят.

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

LoadWithPartialName не подходит - ведущий против такого подхода.
Он указывает мне на тот факт, что в Троелсене написано следующее:
Троелсен.с297
Политика версий .NET по умолчанию
Как мы уже говорили, если запрашиваемые клиентом и реально имеющиеся в GAC сборки отличаются друг от друга номером основной или дополнительной версий,то среда выполнения .NET посчитает их несовместимыми и клиенту будет выдано сообщение об ошибке. Если же различия в номерах версий — только на уровне номера редакции или номера сборки (QFE), то такие сборки .NET считает совместимыми.

у меня первые два номера гарантированно не отличаются. но в GAC нет той версии, с которой компилировали, зато есть другая, совместимая с ней.
и не цепляет. ну какого фига.
мне поставили задачу, чтобы приложение в этом случае цепляло ЛЮБУЮ совместимую версию, имеющуюся в GAC. Этого нельзя сделать? Ну как тогда понимать слова Троелсена - только на случай, если в GAC имеется та версия, с которой компилировали и всё?!
во запара .
...
Рейтинг: 0 / 0
Помогите пожалуйста разобраться с версиями - общие сборки в GAC
    #32944936
Стр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Троелсен автор известный, но дркументацию, (даже начальникам) следует читать в оригинале, а не в втолковании (даже Троелсена)
Assembly VersioningThe default version policy for the runtime is that applications run only with the versions they were built and tested with , unless overridden by explicit version policy in configuration files (the application configuration file, the publisher policy file, and the computer's administrator configuration file).

Assembly Versioning
...
Рейтинг: 0 / 0
Помогите пожалуйста разобраться с версиями - общие сборки в GAC
    #32944981
Стр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А на счёт unless overridden by explicit version policy in configuration files (the application configuration file, the publisher policy file, and the computer's administrator configuration fileи Артём и Bigheadman уже все объяснили.
Осталось донести это до твоего "ведущего"

ЗЫ
Не завидую я тебе - учить начальника всегда может боком выйти :)
Тут надо как-то ненавязчиво (а лучше - незаметно для него) подсунуть эту статью из MSDN, чтобы получилось, что это ОН нашел и принял правильное решение.
...
Рейтинг: 0 / 0
Помогите пожалуйста разобраться с версиями - общие сборки в GAC
    #32945038
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вопрося пишу котролы для хостинга их в IE, контролы эти грузятся с сервера соответственно.
но часть функционала выношу в общие сборки и устанавливаю их в GAC.
сборки, загружаемые из inet в IE, тоже попадают в GAC (в часть download). для того, чтобы не получать отлуп (у IE прав навалом, а вот у загруженных сборок (по codebase) - их практически нет) можно воспользоваться программой "Microsoft .Net Framework Configuration" и назначить там права для загружаемых сборок.

в этом случае вопросов с версионностью практически не останется.
все будет происходить (загрузка новых версий [если они появились на сайте] и их привязка) в автоматическом режиме, который поддерживаеся в framework.
...
Рейтинг: 0 / 0
Помогите пожалуйста разобраться с версиями - общие сборки в GAC
    #32945094
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извини, невольно ввел в заблуждение.

Если контролы "хостятся" в IE, то trust нужно назначать на зону. а это слишком небезопасно. причина - под IE создается AppDomain для контролов и назначается ему trust по зоне (internet согласно URL в .net configuration), при этом не учитывается trust для сборок, которые будут грузиться в этот домен (к этому моменту ничего еще о сборках неизвестно).
ну а trust, который установлен по умолчанию для inet-zone - это смех для WinForms приложения.

задача, которую в свое время пришлось решать мне - похожа на твою. однако со временем от IE пришлось отказаться (одна из причин -security, см. выше, другая - некоторые контролы сторонних производителей требовали, чтобы приложение было полностью WinForms, т.к. использовали главное окно [форму] для своих нужд. в случае IE, понятно, такой managed формы не существует).

в итоге было написано крохотное exe приложение, которое грузило библиотеку контролов с сайта (с полной поддержкой встроенной в framework версионности и безопасности) и работало на машине у клиентов.


----
PS
связь с сервером, который крутился под IIS - по remoting/http
...
Рейтинг: 0 / 0
Помогите пожалуйста разобраться с версиями - общие сборки в GAC
    #32947258
вопрос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ребята, спасибо огромнейшее всем, кто ответил!

к сожалению, тут уже чисто политические трудности, я ща вымотан конкретно, потому что , действительно, учить "ведущего" выходит боком.
как минимум, психологически.

это моя первая такая глубокая практическая "стычка" c .NET и C#, рад, что первый блин не комом, я за эти несколько дней и ночей поднял массу инфы, вкурил на собственном опыте то , что сначала бегло в книге читал, попутно многие утилилы освоил, короче, несмотря на негатив от политических моментов получил массу полезного.

спасибо еще раз, вы даже не представляете, как сильно меня поддержали ваши ответы!

2Кузя
нет, тут IE жесткое требование
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Помогите пожалуйста разобраться с версиями - общие сборки в GAC
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]