.NET Core 2.0を使用してファイルまたはアセンブリをロードできませんでした

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

質問

私はちょうどNet Core 2.0新しいアプリケーションを書くようになり、私はこの構造を持っています:

ConsoleApp
Library

ConsoleAppインポートLibrary 、DLLでの参照、およびLibraryインポートHtmlAgilityPack 1.8.0最後のバージョンが利用可能です。

ConsoleAppを実行すると、 ConsoleAppエラーが表示されます。

Library.dllの 'System.IO.FileNotFoundException'型の未処理の例外ファイルまたはアセンブリ 'HtmlAgilityPack、Version = 1.8.0.0、Culture = neutral、PublicKeyToken = bd319b19eaf3b43a'を読み込めませんでした。指定されたファイルが見つかりませんでした。

イメージに表示されているように、ファイルが利用可能です:

ここに画像の説明を入力

受け入れられた回答

Fuslogvw.exe (アセンブリバインディングログビューア)を使用して、正確に何が起こっているのかを判断する

アセンブリバインディングログビューアには、アセンブリバインドの詳細が表示されます。この情報は、.NET Frameworkが実行時にアセンブリを見つけることができない理由を診断するのに役立ちます。これらの失敗は、通常、誤った場所に配置されたアセンブリ、有効ではなくなったネイティブイメージ、またはバージョン番号やカルチャの不一致の結果です。共通言語ランタイムがアセンブリを見つけられなかった場合は、通常、アプリケーションでTypeLoadExceptionとして表示されます。

重要

管理者権限でfuslogvw.exeを実行する必要があります。

このツールはVisual Studioに自動的にインストールされます。このツールを実行するには、開発者コマンドプロンプト

詳細については、

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

次のサンプルログエントリは、失敗したアセンブリバインドに関する詳細情報を示しています。

> *** 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.

人気のある回答

私は "バグ"を修正することができたようだ。まとめると、私は2つのアプリケーションを持っています。最初はコンソールで、もう1つはNET COREライブラリです。どちらもNET Coreをベースにしています。そこで、2番目のアプリNET CORE libraryを削除し、 STANDARD NET libraryと同じプロジェクトを作成しました。

同じ問題が発生しました。コンソールアプリケーションを実行すると、コンパイラは同じメッセージエラーを表示しました。

Library.dllの 'System.IO.FileNotFoundException'型の未処理の例外ファイルまたはアセンブリ 'HtmlAgilityPack、Version = 1.8.0.0、Culture = neutral、PublicKeyToken = bd319b19eaf3b43a'を読み込めませんでした。指定されたファイルが見つかりませんでした。

そこで、 HtmlAgilityPack Consoleアプリケーションにもインストールしようとしました。ダークマジックのように、これは完全に機能しました。

だから私は、私はにインポートライブラリを使用し、依存関係をインストールする必要があることを推測Consoleも上、 Consoleため、アプリケーションをNET Core 、インポートライブラリのすべての依存関係はと互換性があることを確認する必要がありますNET Core

IMHOこれはマイクロソフトで指定する必要があります。また、この問題はVisual Studio自体で処理する必要があります。なぜ、依存関係のツイストをインストールする必要がありますか?

もちろん、私は自分の答えを受け入れるつもりはない、私はこの問題を私にはっきりさせ、もちろんコミュニティーへと向かうようになった今、この状況を説明する人を待つだろう。



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow