Datei oder Assembly konnte nicht mit .NET Core 2.0 geladen werden

.net-core c# html-agility-pack visual-studio

Frage

Ich fange gerade an, eine neue Anwendung mit Net Core 2.0 zu schreiben, und ich habe diese Struktur:

ConsoleApp
Library

Die ConsoleApp importiert die Library , die eine DLL ist, und die Library importiert HtmlAgilityPack 1.8.0 , das die letzte verfügbare Version ist.

Wenn ich die ConsoleApp , ConsoleApp ich diesen Fehler:

Nicht behandelte Ausnahme vom Typ 'System.IO.FileNotFoundException' in Library.dll Konnte Datei oder Assembly nicht laden 'HtmlAgilityPack, Version = 1.8.0.0, Culture = neutral, PublicKeyToken = bd319b19eaf3b43a'. Die angegebene Datei wurde nicht gefunden.

Die Datei ist verfügbar, wie Sie auf dem Bild sehen können:

Bildbeschreibung hier eingeben

Akzeptierte Antwort

Verwenden Sie Fuslogvw.exe (Assembly Binding Log Viewer), um festzustellen, was genau passiert

Die Assembly Binding Log Viewer zeigt Details für Assembly-Bindungen an. Diese Informationen helfen Ihnen zu diagnostizieren, warum das .NET Framework eine Assembly zur Laufzeit nicht finden kann. Diese Fehler sind normalerweise das Ergebnis einer Assembly, die an der falschen Position bereitgestellt wurde, eines systemeigenen Images, das nicht mehr gültig ist, oder eines Fehlers bei Versionsnummern oder Kulturen. Wenn die Common Language Runtime eine Assembly nicht findet, wird sie in der Regel als TypeLoadException in Ihrer Anwendung angezeigt.

Wichtig

Sie müssen fuslogvw.exe mit Administratorrechten ausführen.

Dieses Tool wird automatisch mit Visual Studio installiert. Verwenden Sie die Entwicklerbefehlseingabe, um das Tool auszuführen

Für weitere Informationen besuchen Sie:

https://docs.microsoft.com/en-us/dotnet/framework/tools/fuslogvw-exe-assembly-binding-log-viewer

Der folgende Beispielprotokolleintrag zeigt detaillierte Informationen zu einer fehlgeschlagenen Assemblybindung.

> *** Assembly Binder Log Entry  (3/5/2007 @ 12:54:20 PM) ***  
> 
> The operation failed.   Bind result: hr = 0x80070002. The system
> cannot find the file specified.  
> 
> Assembly manager loaded from: 
> C:\WINNT\Microsoft.NET\Framework\v2.0.50727\fusion.dll   Running under
> executable  C:\Program
> Files\Microsoft.NET\FrameworkSDK\Samples\Tutorials\resourcesandlocalization\graphic\cs\graphicfailtest.exe
> 
> --- A detailed error log follows.   
> 
> === Pre-bind state information ===   LOG: DisplayName = graphicfailtest.resources, Version=0.0.0.0, Culture=en-US,
> PublicKeyToken=null    (Fully-specified)   LOG: Appbase = C:\Program
> Files\Microsoft.NET\FrameworkSDK\Samples\Tutorials\resourcesandlocalization\graphic\cs\
> LOG: Initial PrivatePath = NULL   LOG: Dynamic Base = NULL   LOG:
> Cache Base = NULL   LOG: AppName = NULL   Calling assembly :
> graphicfailtest, Version=0.0.0.0, Culture=neutral,
> PublicKeyToken=null.  
> ===  
> 
> LOG: Processing DEVPATH.   LOG: DEVPATH is not set. Falling through to
> regular bind.   LOG: Policy not being applied to reference at this
> time (private, custom, partial, or location-based assembly bind).  
> LOG: Post-policy reference: graphicfailtest.resources,
> Version=0.0.0.0, Culture=en-US, PublicKeyToken=null   LOG: Attempting
> download of new URL file:///C:/Program
> Files/Microsoft.NET/FrameworkSDK/Samples/Tutorials/resourcesandlocalization/graphic/cs/graphicfailtest.resources.DLL.
> LOG: Attempting download of new URL file:///C:/Program
> Files/Microsoft.NET/FrameworkSDK/Samples/Tutorials/resourcesandlocalization/graphic/cs/graphicfailtest.resources/graphicfailtest.resources.DLL.
> LOG: Attempting download of new URL file:///C:/Program
> Files/Microsoft.NET/FrameworkSDK/Samples/Tutorials/resourcesandlocalization/graphic/cs/graphicfailtest.resources.EXE.
> LOG: Attempting download of new URL file:///C:/Program
> Files/Microsoft.NET/FrameworkSDK/Samples/Tutorials/resourcesandlocalization/graphic/cs/graphicfailtest.resources/graphicfailtest.resources.EXE.
> LOG: All probing URLs attempted and failed.

Beliebte Antwort

Scheint, dass ich den "Bug" beheben konnte. Zusammenfassend habe ich zwei Anwendungen, die erste ist eine Konsole und die zweite ist eine NET CORE-Bibliothek, beide basieren auf NET Core . Also habe ich die zweite App NET CORE library , und ich habe das gleiche Projekt wie die STANDARD NET library .

Ich habe das gleiche Problem, wenn ich die Konsole-App den Compiler zeigte den gleichen Fehler angezeigt:

Nicht behandelte Ausnahme vom Typ 'System.IO.FileNotFoundException' in Library.dll Konnte Datei oder Assembly nicht laden 'HtmlAgilityPack, Version = 1.8.0.0, Culture = neutral, PublicKeyToken = bd319b19eaf3b43a'. Die angegebene Datei wurde nicht gefunden.

Also habe ich versucht, das HtmlAgilityPack auch in der Console Anwendung zu installieren, und wie bei der dunklen Magie funktionierte das perfekt.

Ich denke, dass ich die Abhängigkeit, die für die in die Console importierte Bibliothek verwendet wird, auch in der Console installieren sollte, da NET Core sicher sein muss, dass alle Abhängigkeiten der importierten Bibliothek mit NET Core kompatibel sind.

IMHO sollte dies von Microsoft angegeben werden, und dieses Problem sollte wiederum von Visual Studio selbst behandelt werden, warum muss ich die Abhängigkeiten Twices installieren?

Natürlich werde ich meine Antwort nicht akzeptieren, ich werde auf jemanden warten, der diese Situation erklärt, jetzt, wo das Problem für mich klarer ist, und natürlich für diese Gemeinschaft.



Related

Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow