Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Помогите пожалуйста разобраться с версиями - общие сборки в GAC
|
|||
|---|---|---|---|
|
#18+
Делаю общую сборку 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. Подскажите, что не так делаю,пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2005, 16:38 |
|
||
|
Помогите пожалуйста разобраться с версиями - общие сборки в GAC
|
|||
|---|---|---|---|
|
#18+
отвечу может не по существу: есть такой чувак Д. Рихтером зовут, так вот, в его книге по .НЕТу есть целая глава посвященная версионности сборок. Кстати там господин Рихтер указывает на один маленький недостаток студии, а именно генерация файла манифеста с такой строчечкой <Assembly: AssemblyVersion("1.0.*")> и в ней то вся загвоздочка. При новой компиляции всегда будет генерироваться новая версия, которая может быть не совместима для программ скомпилированной с другой версией, отсюдаго и гиморой. Что б самому контролировать версии нужно строго прописать <Assembly: AssemblyVersion("1.1.0")> тода никакая перекомпиляция тебе не испугает)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2005, 17:17 |
|
||
|
Помогите пожалуйста разобраться с версиями - общие сборки в GAC
|
|||
|---|---|---|---|
|
#18+
А вы сравните имя сборок (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 Лиман Артём. Принудительная фиксация версии сборки не есть панацея. Версионность была придумана не для того, чтобы программисты ею не пользовались. Некорректная реализация студией? Пожалуй, да. В таком случае вы должны вручную следить за версиями сборок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2005, 17:24 |
|
||
|
Помогите пожалуйста разобраться с версиями - общие сборки в GAC
|
|||
|---|---|---|---|
|
#18+
Кстати при просмотре GAC среда не зря отображает все 4 составляющих версии. Если бы роль играли только 2, то зачем их все отображать? Собственно при просмотре GAC можно увидеть те 4 составляющие, которые и определяют имя сборки: 1) имя файла сборки без расширения (без dll/exe) 2) версия сборки 3) Locale (Culture) 4) Public Key Token ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2005, 17:28 |
|
||
|
Помогите пожалуйста разобраться с версиями - общие сборки в GAC
|
|||
|---|---|---|---|
|
#18+
Bigheadman2 Лиман Артём. Принудительная фиксация версии сборки не есть панацея. Версионность была придумана не для того, чтобы программисты ею не пользовались. Некорректная реализация студией? Пожалуй, да. В таком случае вы должны вручную следить за версиями сборок. да, но не нужно давать студии при каждом внесении изменений, которые не скажуться на совместимости, изменять номер версии, иначе будет такая ситуация как у автора, у меня она кстати тоже была, вовремя избавился. Версия должна менятся осознанно и программистом - это факт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2005, 17:42 |
|
||
|
Помогите пожалуйста разобраться с версиями - общие сборки в GAC
|
|||
|---|---|---|---|
|
#18+
ребят, спасибо большое! извиняюсь за ламерские вопросы - токо изучаю. ща буду вкуривать ссылки Bigheadman пока вкуриваю - я хотел уточнить. вообще мне нужно вот что. я пишу котролы для хостинга их в IE, контролы эти грузятся с сервера соответственно. но часть функционала выношу в общие сборки и устанавливаю их в GAC. зачем это нужно - ну , пока например для того, чтобы печатать на клиенте. потому что если я обращаюсь к печати из контрола, который хостится в IE, то получаю отлуп - прав у IE недостаточно. Чтобы такого не было, контрол обращается к общей сборке, лежащей в GAC на клиенте. И уже код в общей сборке печатает, например, то, что сказали. И теперь ситуация - если контрол, который я хощу в IE изменился, то есть требует более новую версию общей сборки - можно ли заставить его пользоваться уже имеющейся в GAC старой сборкой? но не принудительно указывая версию сборки, а чтобы он находил например самый последний по версиям. Это вообще возможно? В логике нет затыков? И куда копать, если возможно? Спасибо, пошел курить ссылки. В Рихтера загляну обязательно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2005, 18:32 |
|
||
|
Помогите пожалуйста разобраться с версиями - общие сборки в GAC
|
|||
|---|---|---|---|
|
#18+
принудительная фиксация версий точно не подходит но за совет спасибо, просто, кажется, не тот случай ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2005, 18:35 |
|
||
|
Помогите пожалуйста разобраться с версиями - общие сборки в GAC
|
|||
|---|---|---|---|
|
#18+
вопроспринудительная фиксация версий точно не подходит но за совет спасибо, просто, кажется, не тот случай если не использовать редирект в файле настройки, то никак - всегда будет нужна та версия, с которой была скомпилирована сборка, так как это фиксируется на уровне метаданных сборки. Если нужно последнюю, то вроде в редиректе можна задавать промежуток версий, укажи его с запасом и, думаю, будет браться последняя. Хотя я могу ошибаться.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2005, 18:45 |
|
||
|
Помогите пожалуйста разобраться с версиями - общие сборки в GAC
|
|||
|---|---|---|---|
|
#18+
Артём! Изучил ссылки, спасибо. Как я понял - можно разруливать мою ситуацию либо 1) редиректом принудительным 2) рефлекшн, System.Reflection.Assembly.LoadWithPartialName() оба они не подходят. первый отпадает потому что там можно указывать промежуток только тех версий, которые нужны приложению, и заменять их на одну конкретную, которую и будет использовать приложение вместо той, с которой компилировалось. но ведь это нада точно знать, какую версию прописывать. но по условию задачи я не могу знать версию, которая гарантированно на всех компах стоит. LoadWithPartialName не подходит - ведущий против такого подхода. Он указывает мне на тот факт, что в Троелсене написано следующее: Троелсен.с297 Политика версий .NET по умолчанию Как мы уже говорили, если запрашиваемые клиентом и реально имеющиеся в GAC сборки отличаются друг от друга номером основной или дополнительной версий,то среда выполнения .NET посчитает их несовместимыми и клиенту будет выдано сообщение об ошибке. Если же различия в номерах версий — только на уровне номера редакции или номера сборки (QFE), то такие сборки .NET считает совместимыми. у меня первые два номера гарантированно не отличаются. но в GAC нет той версии, с которой компилировали, зато есть другая, совместимая с ней. и не цепляет. ну какого фига. мне поставили задачу, чтобы приложение в этом случае цепляло ЛЮБУЮ совместимую версию, имеющуюся в GAC. Этого нельзя сделать? Ну как тогда понимать слова Троелсена - только на случай, если в GAC имеется та версия, с которой компилировали и всё?! во запара . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2005, 16:17 |
|
||
|
Помогите пожалуйста разобраться с версиями - общие сборки в GAC
|
|||
|---|---|---|---|
|
#18+
Троелсен автор известный, но дркументацию, (даже начальникам) следует читать в оригинале, а не в втолковании (даже Троелсена) 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2005, 21:08 |
|
||
|
Помогите пожалуйста разобраться с версиями - общие сборки в GAC
|
|||
|---|---|---|---|
|
#18+
А на счёт 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, чтобы получилось, что это ОН нашел и принял правильное решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2005, 22:08 |
|
||
|
Помогите пожалуйста разобраться с версиями - общие сборки в GAC
|
|||
|---|---|---|---|
|
#18+
вопрося пишу котролы для хостинга их в IE, контролы эти грузятся с сервера соответственно. но часть функционала выношу в общие сборки и устанавливаю их в GAC. сборки, загружаемые из inet в IE, тоже попадают в GAC (в часть download). для того, чтобы не получать отлуп (у IE прав навалом, а вот у загруженных сборок (по codebase) - их практически нет) можно воспользоваться программой "Microsoft .Net Framework Configuration" и назначить там права для загружаемых сборок. в этом случае вопросов с версионностью практически не останется. все будет происходить (загрузка новых версий [если они появились на сайте] и их привязка) в автоматическом режиме, который поддерживаеся в framework. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2005, 23:57 |
|
||
|
Помогите пожалуйста разобраться с версиями - общие сборки в GAC
|
|||
|---|---|---|---|
|
#18+
Извини, невольно ввел в заблуждение. Если контролы "хостятся" в 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2005, 02:41 |
|
||
|
Помогите пожалуйста разобраться с версиями - общие сборки в GAC
|
|||
|---|---|---|---|
|
#18+
ребята, спасибо огромнейшее всем, кто ответил! к сожалению, тут уже чисто политические трудности, я ща вымотан конкретно, потому что , действительно, учить "ведущего" выходит боком. как минимум, психологически. это моя первая такая глубокая практическая "стычка" c .NET и C#, рад, что первый блин не комом, я за эти несколько дней и ночей поднял массу инфы, вкурил на собственном опыте то , что сначала бегло в книге читал, попутно многие утилилы освоил, короче, несмотря на негатив от политических моментов получил массу полезного. спасибо еще раз, вы даже не представляете, как сильно меня поддержали ваши ответы! 2Кузя нет, тут IE жесткое требование ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2005, 18:47 |
|
||
|
|

start [/forum/topic.php?fid=20&msg=32945038&tid=1437104]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
89ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 253ms |
| total: | 447ms |

| 0 / 0 |
