6
« kdy: 14. 01. 2022, 17:47:51 »
Ahoj.
Mám knihovnu LibA, která využívá jednu knihovnu LibThirdA (pro zajímavost se jedná o RestSharpSign). Pak mám aplikaci AppA, která využívá LibA ale také LibThirdA. Pak mám aplikaci AppB, která využívá LibThirdB (konkrétně RestSharp (bez Sign)), a teď bych rád aby používal taky tu LibA, což ale nejde, protože LibThirdA a LibThirdB konfliktí. Případně dokonce LibThirdA nechci v aplikaci vysloveně používat. LibThirdB je jen další generace LibThirdA, takže to prostě můžu přepsat, jenže:
Dotaz:
Obecně, jak takovýto problém řešit?
Momentálně to mám vyřešené tím, že mám knihovnu LibA ve verzi 1.0.x a 1.1.x. Což sice funguje, ale začíná se to jevit jako ne úplně šťastný nápad, protože to při závislostech zlobí, nainstaluje to správný balíček, ale řve to, že tam není požadovaný objekt. [1] To by mohlo řešit, že bych vytvořil separe pojmenovaný balíček, kdy by nominálně neměli nic společného. Ale stejně mi to přijde divný.
Napadá vás jiný způsob?
Nejvíc by se mi líbilo, když bych mohl vydat jeden balíček, v jedné verzi, který by ale byl tolerantní a umožnil by závislost na LibThirdA nebo LibThirdB podle toho, co by chtěl nadřazený.
Díky za nápady.
[1] Mám tam totiž ještě jednu úroveň:
AppA závisí na LibA, LibX a LibThirdA.
LibX závisí na LibA.
LibA závisí na LibThirdA.
AppB závisí na LibThirdB.
Potřebuju změnit:
AppB závisí na LibA, LibX a LibThirdB.