Форум
.NET
Тема
Как правильно задавать вопросы
B
I
abc
U
X
3
X
3
H1
H2
H3
H4
H5
H6
Asm
C/C++
C#
Erlang
Haskell
IDL
Java
Lisp
MSIL
Nemerle
ObjC
OCaml
Pascal
Perl
PHP
Prolog
Python
Ruby
Rust
SQL
VB
Здравствуйте, Sinclair, Вы писали: S>ПЗдравствуйте, Quebecois, Вы писали: Q>>1. Возьмем 3 сборки: Q>>[list] Q>>* ParentAssembly с ParentClass(int x) Q>>* ChildAssembly с ChildClass(int x) : base(x), сгенерированный компилятором Q>>* UserAssembly, создающую ChildClass. Q>>[/list] Q>>2. Меняем в ParentAssembly int x -> string x. Q>>3. Пересобираем ParentAssembly и ChildAssembly. Все собралось без ошибок и зарелизилось. Q>>4. Где-то в другой временной зоне громко ругается разработчик UserAssembly, который начал вываливаться с MethodNotFoundException. S>Простите, но вы неправы. Описанный вами сценарий и не должен работать, и не работает в С# независимо от наличия автоматически унаследованных конструкторов. S>Корень проблемы, которую вы описываете в своём примере, не в том, что там что-то автоматически отнаследовалось, а в том, что владелец UserAssembly пытается использовать её [i]без перекомпиляции[/i] после того, как одна из зависимостей (ChildAssembly) изменилась. S>Дотнет [b]не рассчитан[/b] на такое использование. Правило большого пальца: если изменилась хотя бы одна из зависимостей, проект нужно пересобирать. S>Исключения из этого правила очень редки, и требуют специальных усилий. Ну, там, к примеру, если вы пишете приложение, которое должно уметь работать с плагинами - в некотором смысле, плагины являются для вас зависимостями; но там вы будете прилагать специальные меры как со стороны приложения, так и со стороны плагинов (в виде набора ограничений на типы, экспортируемые из плагина) для предотвращения проблем с версионированием метаданных. S>Авторы .Net, конечно же, предпринимают усилия при публикации апдейтов - так, чтобы приложения, собранные под .Net 6.0.0, продолжали работать под .Net 6.0.3 без перекомпиляции. S>И эти усилия, в частности, включают в себя запрет на внезапные модификации сигнатур конструкторов.
Теги:
Введите теги разделенные пробелами. Обрамляйте в кавычки словосочетания с пробелами внутри, например:
"Visual Studio" .NET
Имя, пароль:
Загрузить
Нравится наш сайт?
Помогите его развитию!
Отключить смайлики
Получать ответы по e-mail
Проверить правописание
Параметры проверки …