Mam inny z tych problemów „Nie można załadować pliku lub zestawu lub jednej z jego zależności”.
Informacje dodatkowe: Nie można załadować pliku lub zestawu „Microsoft.Practices.Unity, Version = 1.2.0.0, Culture = neutralny, PublicKeyToken = 31bf3856ad364e35” lub jednej z jego zależności. Definicja manifestu zlokalizowanego zespołu nie pasuje do odwołania do zespołu. (Wyjątek od HRESULT: 0x80131040)
Nie mam pojęcia, co jest przyczyną tego problemu ani jak mogę go debugować, aby znaleźć przyczynę.
Przeprowadziłem wyszukiwanie w moich katalogach rozwiązań plików .csproj i wszędzie tam, gdzie mam Unity, mam:
Odniesienia obejmują = „Microsoft.Practices.Unity, Version = 2.0.414.0, Culture = neutralny, PublicKeyToken = 31bf3856ad364e35, ProcessorArchitecture = MSIL”
Nie mogę znaleźć nigdzie odniesienia, które byłoby sprzeczne z 1.2.0.0 w żadnym z moich projektów.
Jakieś pomysły, jak powinienem rozwiązać ten problem?
Byłbym także wdzięczny za wskazówki, jak ogólnie debugować takie problemy.
źródło
Unity
bibliotece?Odpowiedzi:
Sprawdź, czy odwołujesz się do zestawu, który z kolei odwołuje się do starej wersji jedności. Na przykład załóżmy, że masz wywoływany zestaw,
ServiceLocator.dll
który wymaga starej wersji zestawu Unity, a teraz, gdy odwołujesz się do niegoServiceLocator
, powinieneś dostarczyć mu starą wersję Unity, i to stanowi problem.Może być folderem wyjściowym, w którym wszystkie projekty budują swoje zespoły, ma starą wersję jedności.
Możesz użyć FusLogVw, aby dowiedzieć się, kto ładuje stare zestawy, po prostu zdefiniuj ścieżkę do dziennika i uruchom swoje rozwiązanie, a następnie zaznacz (w FusLogvw) pierwszą linię, w której ładowany jest zestaw Unity, kliknij go dwukrotnie i zobacz wywołanie montaż i proszę bardzo.
źródło
Otwórz Menedżera IIS
Wybierz Pule aplikacji
następnie wybierz pulę, której używasz
przejdź do ustawień zaawansowanych (po prawej stronie)
Zmień flagę Włącz 32-bitową aplikację na false na true.
źródło
Dla mnie żadne inne rozwiązanie nie zadziałało (w tym strategia czyszczenia / odbudowy). Znalazłem inne rozwiązanie obejścia, które polega na zamknięciu i ponownym otwarciu programu Visual Studio .
Myślę, że to zmusza Visual Studio do ponownego załadowania rozwiązania i wszystkich projektów, ponownie sprawdzając zależności w tym procesie.
źródło
Spróbuj wyczyścić foldery debugowania i wydania w swoim rozwiązaniu. Następnie usuń i dodaj ponownie jedność.
źródło
Przy 99% nie można załadować pliku lub zestawu lub jeden z problemów związanych z zależnościami jest spowodowany przez zależności! Proponuję wykonać następujące kroki:
Pobierz Dependency Walker ze strony http://www.dependencywalker.com/
Uruchom Dependency Walker i otwórz bibliotekę DLL (w moim przypadku
NativeInterfaces.dll
)Możesz zobaczyć jedną lub więcej dll z błędem na czerwono Błąd otwierania pliku ...
Oznacza to, że tej biblioteki brakuje w twoim systemie; w moim przypadku nazwa dll to
MSVCR71.DLL
Możesz pobrać dll brakujących plików z Google i skopiować właściwą ścieżkę (w moim przypadku
c:\windows\system32
)W tym momencie musisz zarejestrować nową bibliotekę DLL w GAC (Global Assembly Cache): otwórz terminal DOS i napisz:
Uruchom ponownie aplikację!
źródło
API-MS-WIN-CORE-KERNEL32-PRIVATE-L1-1-1.DLL
znaleziono kilku plików ( ) i zaprowadziłem mnie do tego pytania dotyczącego przepełnienia stosu . Zasadniczo należy pamiętać, że niektóre pliki mogą być fałszywie pozytywne, link zawiera więcej szczegółów.Microsoft Enterprise Library (do którego odwołuje się .NetTiers) był naszym problemem, który z kolei odwoływał się do starszej wersji Unity. W celu rozwiązania problemu zastosowaliśmy następujące przekierowanie wiązania w pliku web.config:
Alternatywnie możesz po prostu zaktualizować bibliotekę Enterprise Library do najnowszej wersji.
źródło
Obserwowanie działało dla mnie.
źródło
Sprawdź plik Web.config / App.config w swoim projekcie. Sprawdź, czy numery wersji są prawidłowe.
To zadziałało dla mnie.
źródło
Pomimo opublikowania pierwotnego pytania pięć lat temu problem nadal występuje i jest raczej denerwujący.
Ogólnym rozwiązaniem jest dokładna analiza wszystkich odnośnych zestawów, aby zrozumieć, co się dzieje. Aby uprościć to zadanie, stworzyłem narzędzie (rozszerzenie Visual Studio), które pozwala wybrać zestaw .NET ( plik
.dll
lub.exe
plik), aby uzyskać wykres wszystkich odnośnych zestawów, jednocześnie podkreślając sprzeczne lub brakujące odniesienia.Narzędzie jest dostępne w Visual Studio Gallery: https://marketplace.visualstudio.com/vsgallery/051172f3-4b30-4bbc-8da6-d55f70402734
Przykład wyniku:
źródło
W eksploratorze rozwiązań kliknij prawym przyciskiem myszy projekt (nie rozwiązanie), w zakładce kompilacji wybierz Cel platformy: „Dowolny procesor”.
źródło
Odpowiedź Juntos jest poprawna, ale należy również wziąć pod uwagę:
Dla unity v2.1.505.2 określone są różne atrybuty AssemblyVersion i AssemblyFileVersion :
AssemblyFileVersion jest używany przez Nuget ale CLR nie dba o niego! CLR będzie używał tylko AssemblyVersion !
Dlatego przekierowania należy zastosować do wersji określonej w atrybucie AssemblyVersion . Dlatego należy zastosować 2.1.505.0
Zobacz także: Jakie są różnice między AssemblyVersion, AssemblyFileVersion i AssemblyInformationalVersion?
źródło
Dostałem też ten straszny błąd i znalazłem rozwiązanie tego ...
1), 2)
4), 5)
Mam nadzieję, że to również pomoże.
źródło
źródło
Nie jestem pewien, czy to może pomóc.
Sprawdź, czy nazwa zestawu i domyślna przestrzeń nazw w polach w twoich zestawach są zgodne. To rozwiązało mój problem, który spowodował ten sam błąd.
źródło
W moim przypadku w folderze bin znajdowała się dll bez odniesienia o nazwie Unity.MVC3, próbowałem wyszukać dowolne odniesienie do tego w Visual Studio bez powodzenia, więc moje rozwiązanie było tak proste, jak usunięcie tej dll z folderu bin.
źródło
Dzięki Riddhi M. Obserwowanie działało dla mnie.
Usuń pliki tymczasowe C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Tymczasowe pliki ASP.NET Zamknij VSTS i otwórz ponownie Usuń i dodaj te same biblioteki DLL (Uwaga: dodajesz te same pasujące wersje)
źródło
Mówisz, że masz wiele projektów w swoim rozwiązaniu ... cóż, zacznij od jednego w górnej części kolejności kompilacji. Zdobądź ten, który zbudujesz, a kiedy go wymyślisz, możesz zastosować tę samą poprawkę do pozostałych.
Szczerze mówiąc, prawdopodobnie wystarczy odświeżyć referencję. Wygląda na to, że albo zaktualizowałeś swoją wersję i nie zaktualizowałeś referencji, albo jest to względny problem ze ścieżką, jeśli trzymasz swoje rozwiązanie pod kontrolą źródła. Po prostu sprawdź swoje założenia i ponownie dodaj referencję.
źródło
Obserwowanie działało dla mnie.
źródło
Ten problem przydarzył mi się, gdy jedna z moich zależnych bibliotek kompilowała bibliotekę DLL z „Any CPU”, gdy biblioteka nadrzędna spodziewała się kompilacji „x64”.
źródło
Miałem ten sam problem, który rozwiązałem za pomocą poniższych instrukcji:
use the 64bit version of IIS ...
źródło
Musisz usunąć plik appname.dll z folderu wyjściowego. Oczyszczanie folderów debugowania i wydawania. Odbuduj i skopiuj do wygenerowanego folderu dll.
źródło
I „Ustaw jako projekt startowy” rozładowaną / nieuzasadnioną bibliotekę / projekt.
Następnie wdrożyłem.
Zadziałało!
Myślę, że nie można znaleźć .dll, ponieważ początkowo nie było go w zestawie.
źródło
Inna możliwa przyczyna: upewnij się, że przypadkowo nie nadałeś obu projektom tej samej nazwy zestawu we właściwościach projektu.
źródło
Moim rozwiązaniem dla .NET 4.0 przy użyciu Enterprise Library 5 było dodanie odwołania do:
Microsoft.Practices.Unity.Interception.dll
źródło
Uważaj na sprzeczne odniesienia. Nawet po wyczyszczeniu i odbudowaniu sprzeczne odwołania nadal będą powodować problemy. Mój problem dotyczył AForge i Accord. Usunąłem oba odniesienia i ponownie dodałem odniesienia, wybierając ponownie określone odniesienie (szczególne w moim przypadku, tylko Accord).
źródło
Dla mnie przebudowanie gry Unity bez Unity C # Proects Checkmark zadziałało.
źródło
W moim przypadku żadna z proponowanych odpowiedzi nie zadziałała.
Oto, co zadziałało dla mnie:
Drugi krok był najwyraźniej ważny, ponieważ bez niego nie działał.
źródło
Spróbuj sprawdzić, czy właściwość „Kopiuj do lokalnego” dla odwołania jest ustawiona na wartość true, a konkretna wersja jest ustawiona na wartość true. Dotyczy to aplikacji w Visual Studio.
źródło
Miałem to dzisiaj, aw moim przypadku problem był bardzo dziwny:
Zwróć uwagę na zbłąkane znaki na końcu XML - w jakiś sposób zostały one przeniesione z numeru wersji na koniec tego bloku XML!
Zmieniono na powyższe i voila! Wszystko znów działało.
źródło
jeśli pojawia się ten komunikat o błędzie, otwierając aplikację na Windows XP, oznacza to, że najpierw zainstalowałeś tę aplikację, ponieważ nie działa ona bez Net Framework 4 i dodatku Service Pack 3. zainstalowałeś oba i znowu pojawia się ten błąd, więc powinieneś ponownie zainstalować tę aplikację, ale najpierw odinstaluj z dodawania i usuwania
jeśli to nie zadziała, nie obrażaj mnie. Jestem również młodszy
źródło