Ostatnio dodane log4net.dll do naszego obiektu danych. Nasz obiekt danych opiera się doskonale, ale podczas próby budowania czegokolwiek odwołujący nasze dane obiekt, który pojawia się następujący błąd:Jak naprawić błąd "Nie można rozwiązać konfliktu między"?
No way to resolve conflict between "log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" and "log4net, Version=1.2.9.0, Culture=neutral, PublicKeyToken=b32731d11ce58905". Choosing "log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" arbitrarily.
znalazłem następujący thread które pozwoliły mi uzyskać więcej informacji na temat tego problemu.
log4net służy do różnych rzeczy w naszym projekcie. Na przykład, kryształ zainstalował 1.2.9 w GAC. Wiem, że infragictics używa 1.2.10.
Mamy konkretny katalog - nazwijmy go c:\references
- gdzie budujemy wszystkie nasze biblioteki DLL i wszystkie nasze aplikacje wykorzystują nasze referencje do naszych wewnętrznych bibliotek dll. Tak więc ustawiłem swoje odniesienie w naszym obiekcie danych na c: \ references \ log4net.dll, który jest w wersji 1.2.11. Co jest dziwne, ponieważ w powyższym komunikacie o błędzie nie widzisz 1.2.11. Do biblioteki dll odwołuje się konkretna wersja: = True & Copy Local: = True. Sprawdziłem katalog kompilacji & 1.2.11 log4net został poprawnie przeniesiony.
Jeśli to pomaga oto niektóre ze szczegółowych komunikatów o błędach:
There was a conflict between "log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" and "log4net, Version=1.2.9.0, Culture=neutral, PublicKeyToken=b32731d11ce58905".
No way to resolve conflict between "log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" and "log4net, Version=1.2.9.0, Culture=neutral, PublicKeyToken=b32731d11ce58905". Choosing "log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" arbitrarily.
References which depend on "log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" [C:\Windows\assembly\GAC_32\log4net\1.2.10.0__692fbea5521e1304\log4net.dll].
C:\Windows\assembly\GAC_MSIL\CrystalDecisions.Shared\13.0.2000.0__692fbea5521e1304\CrystalDecisions.Shared.dll
References which depend on "log4net, Version=1.2.9.0, Culture=neutral, PublicKeyToken=b32731d11ce58905" [C:\Program Files (x86)\Business Objects\Common\4.0\managed\log4net.dll]. c:\references\DBObjectAdoNet.dll
Project file item includes which caused reference "c:\references\DBObjectAdoNet.dll".
Aktualizacja: Do tej pory jedynym sposobem znalazłem się naprawić ten błąd jest odniesienie log4net w cokolwiek odwołującego DBObjectAdoNet.dll. To naprawdę nie jest użyteczne rozwiązanie dla nas, ponieważ prawie w całym naszym systemie używa tego wszystkiego.
Druga aktualizacja: Próbowałem umieścić log4net w myśleniu GAC, który rozwiązałby problem, ale wciąż nie ma wyjścia.
3rd Update: Nawiązałem połączenie z pomocą techniczną do firmy Microsoft. Chcą, żebym użył Assembly.LoadFrom(), który jestem bardzo, bardzo niezdecydowany, ponieważ wykonujemy ponad 300 000 połączeń w jednej aplikacji i wymagałoby to odbicia dla każdego połączenia, które spowolniłoby trochę.
Dowiedziałem się, że jeśli odinstaluję krystalicznie środowisko uruchomieniowe na moim komputerze, błąd zniknie, co nie ma większego sensu, ponieważ jedyne co robi to, o ile mogę powiedzieć, to usunięcie log4net 1.2.10.0 z GAC w folderze .NET framework 2.0, co nie powinno mieć znaczenia, ponieważ aplikacja jest aplikacją 4 .NET Framework.
"Cytat" dowiedziałem się, że odinstalowałem środowisko wykonawcze kryształów na mojej maszynie '/ quote' - pytanie: ** crystal runtime **? Jakie ** środowisko wykonawcze kryształów **? –
@Robert Crystal 11 x86 dla .Net Framework 4. Myślę, że kiedy miałem problem, to samo stało się również z wersją x64. – coding4fun
Dodałem odwołanie do wersji log4net, którą chciałem do projektu, który nie był w stanie rozwiązać konfliktu, a to rozwiązało problem. –