Ahoj.
Potřeboval bych nakopnout, v C# jsem zelenáč, a tak nevím co a jak hledat.
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ý.
Jsem někde v dokumentaci zahlédl, že se dají nějak ifovat různé věci, architektura a tak. A tak si představuji, jestli nejde ifvnout, že pokud bude k dispozici tato knihovna, tak jeď tento kód, pokud bude tato, tak tamten...
Šlo by to nějak?
Předem díky.