Jako że mam w dużym projekcie legacy problem z różnymi wersjami blibioteki Newtonsoft.Json co wymaga stosowania bindingRedirect w configu, próbuję zrozumieć o co w tym w ogóle chodzi.
Źródło obrazka
Przeczytałem już kilka artykułów na ten temat i każdy z nich można streścić w zasadzie tak: problem pojawia się gdy w projekcie różne biblioteki zależą od tej samej paczki ale o różnych wersjach. Jedna z zależności wymaga paczki X w wersji 1, a druga w dajmy na to wersji 2. Z jakiegoś powodu możemy mieć w projekcie tylko jedną wersję, stąd właśnie użycie bindingRedirect i podstawianie bibliotekom innej zależnosci niż one faktycznie potrzebują.
Nie rozumiem natomiast jednej rzeczy: co nas właściwie powstrzymuje przed trzymaniem w pamięci dwóch wersji paczki jednocześnie? Dlaczego nie możemy trzymać kilku wersji Newtonsofta w binarkach projektu i używać każdej z nich według potrzeb? Może i będzie to kosztować więcej pamięci, ale czy to nie jest wciaż lepsze niż bindingRedirect który może potencjalnie spowodować błąd w czasie wykonania programu?