2012-12-14 24 views
5

Po aktualizacji Newtonsoft.Json pojawia się konflikt złożenia. Mam problem ze zrozumieniem, skąd pochodzi określona wersja, do której odwołuje się błąd. W pliku web.config nie ma niczego, co wskazywałoby na konkretną wersję.Konflikt zespołu w Newtonsoft.Json

System.IO.FileLoadException: Nie można załadować pliku lub zestawu 'Newtonsoft.Json, Version = 3.5.0.0, culture = neutralnym, TokenKluczaPublicznego = 30ad4fe6b2a6aeed' lub jeden z jego zależnościami. Zdefiniowana definicja manifestu zespołu zlokalizowanego nie pasuje do odwołania do zestawu. (Wyjątek od HRESULT: 0x80131040)

Czy GAC-ing dwie wersje pracy montażowej, aby rozwiązać problem?

Odpowiedz

3

GACing ich może działać, ale spowoduje to koszmar utrzymania. Nie rób tego!

myślę, że masz 2 opcje:

  1. korzystać z wersji dostarczonej z Sitecore, który będzie zależeć od wersji Sitecore używasz.
  2. Pozostaw nietkniętą wersję jednej sitecore i użyj ilmerge, aby połączyć nową wersję Newtonsoft.Json z własnym zestawem.

polecam 1, jeśli nie trzeba żadnej z najnowszych funkcji biblioteki podobne (dynamika ... etc)

+0

Czy nie jest możliwe, aby przekierować wersje montażowe? Nie wiem, jaki efekt (jeśli w ogóle) będzie miał na Sitecore ... http://msdn.microsoft.com/en-us/library/7wd6ex19.aspx – jammykam

+0

Możesz spróbować, ale obie wersje wymagają montażu mieć ten sam publiczny znacznik. Nie jestem pewien, czy tak jest. Musisz również wziąć pod uwagę, że sitecore jest testowane ze starszą wersją, a nowsze wersje Json.net mają przełomowe zmiany, więc możesz potencjalnie coś zepsuć na sitecore, przekierowując zestaw jako wspomniany @jammykam. – marto

17

As @jammykam commented w odpowiedzi Marto może przekierować montaż. Zrobiłem to w przeszłości z Newtonsoft i Sitecore bez problemu. Możesz rzucić okiem na moją Sitecore Content as Service code, gdzie mam to działa.

Jesteś specjalnie zainteresowany tych linii w pliku web.config: https://github.com/HedgehogDevelopment/sitecore-content-service/blob/master/Sitecore/Web/Web.config#L3499

<dependentAssembly> 
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-4.0.8.0" newVersion="4.5.0.0" /> 
</dependentAssembly> 
+0

to uratowało moje popołudnie, dziękuję! –

+0

Dzięki @ Sean-Kearney. Twój plik web.config uratował nas od piekła dll. – Ben

+0

Oczywiście oczywiście również odwrotnie, jeśli musisz obniżyć wersję, która była w moim przypadku ... oldVersion = "0.0.0.0-6.0.0.0" newVersion = "4.5.0.0" –

Powiązane problemy