Imagine that you have a package MyPackage
and it depends on another project called Library
. MyPackage
has extension methods in a class LibraryClass
which is in the Library
project.
At some point Library
is changed and LibraryClass
is renamed to NewLibraryClass
or removed completely. You make changes in your project, for example move extension methods to NewLibraryClass
or solve it in a different way, this does not matter much.
The problem arises when someone has a pre-Library
-changes version of MyPackage
already installed and updates it. Then Library
package is loaded first, as your project depends on it. While Library
is being loaded LibraryClass
is removed and so MyPackage
extension methods that were present in LibraryClass
are deleted. This marks MyPackage
as dirty, and so when it finally loads changes to MyPackage
, the user is asked to resolve a merge even if there are no real conflicts.
How can this be solved? Because in the end your code is fine, but the user that updates your project will face weird merge questions.