Представьте, что у вас есть пакет MyPackage
, и это зависит от другого проекта под названием Library
. MyPackage
имеет методы расширения в классе LibraryClass
, который находится в проекте Library
.Обновление проекта, который расширяет класс, удаленный в проекте зависимостей
В какой-то момент Library
изменен и LibraryClass
переименован в NewLibraryClass
или удален полностью. Вы вносите изменения в свой проект, например, применяете методы расширения до NewLibraryClass
или решаете его по-другому, это не имеет большого значения.
Проблема возникает, когда у кого-то есть pre-Library
-changes версия MyPackage
уже установлена и обновляет ее. Затем сначала загружается пакет Library
, так как ваш проект зависит от него. Пока Library
загружается LibraryClass
удаляется, и поэтому MyPackage
методы расширения, которые присутствовали в LibraryClass
, удаляются. Это означает, что MyPackage
является грязным, и поэтому, когда он, наконец, загружает изменения в MyPackage
, пользователю предлагается разрешить слияние, даже если нет реальных конфликтов.
Как это можно решить? Потому что в конечном итоге ваш код в порядке, но пользователь, который обновляет ваш проект, столкнется с проблемами странного слияния.
Единственный способ я вижу, чтобы справиться с этим правильно для каждого проекта в отслеживать (т.е. помнить) все классы, чьи имена были изменены, и предлагать услуги, которые могут быть использованы зависимыми проектами для миграции при загрузке. –