I support a couple of Nuget packages. Call them Rosencrantz and Guildenstern (why not?). Guildenstern is dependent on Rosencrantz, so if you install Guildenstern, you will get both of them.
It turns out that in practice you always need both of them; installing only Rosencrantz is useless. In addition, it turns out that they need to be updated in lock mode. Therefore, if you upgrade Rosencrantz rather than Guildenstern, you may have strange problems. (If you update Guildenstern, its dependencies will automatically update Rosencrantz, so this works fine.)
I want to combine them into one package. Ideally, I would call this package Rosencrantz, because, as far as the developers are concerned, what it is called and the fact that they should also install Guildenstern are a bit confused. (This means that people regularly update Rosencrantz, not Guildenstern, causing problems.) I can do this: I can change the build and publish process so that v1.1 from Rosencrantz includes v1.1 Guildenstern and never publishes v1.1 Guildenstern separately. But if I do, then when someone upgrades their project from Rosencrantz v1.0 to v1.1, they will still have Guildenstern v1.0 in their project, plus they will get Guildenstern v1.1 along with Rosencrantz v1.1 .
How can I make this a pure developer experience? My ideal world scenario is that when a developer upgrades to Rosencrantz v1.1 or later, Guildenstern v1.0 is automatically removed from his project.
source share