Не удалось загрузить файл или сборку с помощью .NET Core 2.0

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

Вопрос

Я просто начал писать новое приложение с Net Core 2.0 и у меня есть эта структура:

ConsoleApp
Library

ConsoleApp импортирует ссылку Library которая является dll, и Library import HtmlAgilityPack 1.8.0 которая является последней доступной версией.

Когда я запускаю ConsoleApp , я получаю эту ошибку:

Необработанное исключение типа «System.IO.FileNotFoundException» в Library.dll Не удалось загрузить файл или сборку «HtmlAgilityPack, Version = 1.8.0.0, Culture = neutral, PublicKeyToken = bd319b19eaf3b43a». Указанный файл не найден.

Файл доступен, как вы можете видеть на картинке:

введите описание изображения здесь

Принятый ответ

Используйте Fuslogvw.exe (Assembly Binding Log Viewer), чтобы определить, что именно происходит

Средство привязки журнала привязки к сборке отображает детали для связывания сборок. Эта информация поможет вам определить, почему .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.

Популярные ответы

Кажется, я смог исправить «ошибку». Итак, для обобщения, у меня есть два приложения, первое - консоль, а вторая - библиотека NET CORE, оба из которых основаны на NET Core . Поэтому я удалил вторую NET CORE library приложения, и я создал тот же проект, что и STANDARD NET library .

У меня такая же проблема, когда я запускаю консольное приложение, компилятор отображал ту же ошибку сообщения:

Необработанное исключение типа «System.IO.FileNotFoundException» в Library.dll Не удалось загрузить файл или сборку «HtmlAgilityPack, Version = 1.8.0.0, Culture = neutral, PublicKeyToken = bd319b19eaf3b43a». Указанный файл не найден.

Поэтому я попытался установить HtmlAgilityPack также в приложении Console , и, как и темная магия, это сработало отлично.

Поэтому я предполагаю, что я должен установить зависимость, используемую в библиотеке, импортированной в Console , также в приложении Console поскольку NET Core должен быть уверен, что вся зависимость импортируемой библиотеки совместима с NET Core .

ИМХО, это должно быть указано Microsoft, и снова эта проблема должна решаться самой Visual Studio , почему мне нужно установить твики зависимостей?

Конечно, я не собираюсь принимать свой ответ, я буду ждать кого-то, кто объяснит эту ситуацию сейчас, что проблема более ясна для меня, и, конечно же, для такого сообщества.



Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow