2014-11-04 31 views
9

W mojej aplikacji WPF, mam następujący wyjątek na starcie:"Nie można załadować pliku lub zestawu" PresentationUI.Aero2 "lub jednej z jego zależności." Dlaczego nie?

A first chance exception of type 'System.IO.FileNotFoundException' occurred in mscorlib.dll 

Additional information: Could not load file or assembly 
'PresentationUI.Aero2, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 
or one of its dependencies. 

EDIT: Korzystanie z dziennika fuzyjne, mam trochę więcej cennych informacji niż stos wywołań:

LOG: DisplayName = PresentationUI.Aero2, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 
(Fully-specified) 
LOG: Appbase = file:///[...]/bin/Debug/ 
LOG: Initial PrivatePath = NULL 
LOG: Dynamic Base = NULL 
LOG: Cache Base = NULL 
LOG: AppName = EngideskLauncher.vshost.exe 
Calling assembly : PresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35. 
=== 
LOG: This bind starts in default load context. 
LOG: Using application configuration file: [...]\bin\Debug\EngideskLauncher.vshost.exe.Config 
LOG: Using host configuration file: 
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config. 
LOG: Post-policy reference: PresentationUI.Aero2, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 
LOG: GAC Lookup was unsuccessful. 
LOG: Attempting download of new URL file:///[...]/bin/Debug/PresentationUI.Aero2.DLL. 
LOG: Attempting download of new URL file:///file:///[...]/bin/Debug/PresentationUI.Aero2/PresentationUI.Aero2.DLL. 
LOG: Attempting download of new URL file:///file:///[...]/bin/Debug/PresentationUI.Aero2.EXE. 
LOG: Attempting download of new URL file:///file:///[...]/bin/Debug/PresentationUI.Aero2/PresentationUI.Aero2.EXE. 
LOG: All probing URLs attempted and failed. 

co znajdę dziwne, jest to, że zestaw wywołujący jest w oczywisty sposób zbiorem PresentationFramework, który jest zespołem ramowym .NET. Zestaw .NET Framework nie wywoła zestawu, który nie jest zespołem ramowym .NET. W każdym razie, nie mogę znaleźć PresentationUI.Aero2.DLL w dowolnym miejscu i nawet Google chyba nic o tym nie wie?

Wszelkie pomysły?

Dodatkowe informacje:

  • .NET Framework 4.0
  • Okna 8,1
+0

Włącz dziennik fuzji lub użyj programu ProcMon, aby sprawdzić, który plik próbuje załadować. Zobacz [Jak debugować błędy "Nie można załadować pliku lub zestawu"?] (Http://stackoverflow.com/questions/4602912/how-to-debug-could-not-load-file-or-assembly-runtime- błędy). – CodeCaster

+0

Hi CodeCaster, dzięki za podpowiedź. Byłbym szczęśliwy, gdybyś mógł przekazać mi krótkie informacje na temat wyników. Czy masz jakies pomysły? – Marc

+0

Cześć Hans, folder, o którym wspomniałeś, zawiera 'PresentationFramework.Aero2.DLL', ale nie' PresentationUI.Aero2.DLL'. Co masz na myśli mówiąc, że "w jaki sposób masz 4.0 na tej maszynie jest całkowicie nie do zniesienia"? Nie pamiętam, żeby użyć młotka do sań;) Dziękuję za pomoc! – Marc

Odpowiedz

2

byłem coraz ten sam błąd i wreszcie zrozumiał, że to był po prostu zatrzymując się w IDE, ponieważ miałem pierwszą szansę wyjątki są włączone, wyjątek nie ma znaczenia i można go zignorować lub kontynuować.

+0

Cholera ... Prawda !! – Marc

+0

To nie odpowiada na pytanie, dlaczego wyjątek jest zgłaszany. Czy masz pojęcie, dlaczego jest on rzucany, jeśli możemy go zignorować? – Zack

12

Jeśli jesteś zainteresowany, to jest (łagodny) błąd w WPF. Wyjątkiem jest pierwsza szansa i można ją zignorować.

WPF zapomniałem dodać Aero2.NormalColor.xaml do PresentationUI.dll. Jeśli przejrzysz PresentationUI.dll ze swoim ulubionym odbłyśnikiem/dekompilatorem, znajdziesz wszystkie rodzaje motywów, takich jak Aero.NormalColor.baml itd., Ale nie Aero2.NormalColor.xaml. To powoduje, WPF, aby spróbować i zobaczyć, czy zespół zewnętrzny istnieje:

ten próbuje załadować Aero2.NormalColor.baml z PresentationUI.dll i zwraca null: http://referencesource.microsoft.com/#PresentationFramework/src/Framework/System/Windows/SystemResources.cs,773

to potem idzie spróbować zespół zewnętrzne: http://referencesource.microsoft.com/#PresentationFramework/src/Framework/System/Windows/SystemResources.cs,554

I to rzuca faktyczny wyjątek: http://referencesource.microsoft.com/#PresentationFramework/src/Framework/System/Windows/SystemResources.cs,706

Ten wyjątek jest powszechnie przestrzegany, gdy i FlowDocument lub FlowDocumentScrollViewer.

+0

Doskonałe wyjaśnienie, dziękuję! – Marc

Powiązane problemy