.NET Core 2.0을 사용하여 파일 또는 어셈블리를로드 할 수 없습니다.

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

문제

Net Core 2.0 으로 새로운 애플리케이션을 작성하기 시작했으며 다음과 같은 구조를 가지고 있습니다.

ConsoleApp
Library

ConsoleApp 은 dll이라는 Library 참조를 가져오고, Library import HtmlAgilityPack 1.8.0 은 사용 가능한 마지막 버전입니다.

ConsoleApp 실행하면이 오류가 발생합니다.

라이브러리 파일 'System.IO.FileNotFoundException'형식의 처리되지 않은 예외 파일 또는 어셈블리 'HtmlAgilityPack, 버전 = 1.8.0.0, 문화 = 중립, 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.

인기 답변

내가 "버그"를 고칠 수 있었다고합니다. 요약하면 두 개의 응용 프로그램이 있습니다. 첫 번째는 콘솔이고 두 번째는 NET CORE 라이브러리이며 둘 다 NET Core 기반으로합니다. 그래서 두 번째 앱인 NET CORE library 삭제하고 STANDARD NET library 와 동일한 프로젝트를 만들었습니다.

콘솔 응용 프로그램을 실행할 때 같은 메시지 오류가 표시되는 동일한 문제가 있습니다.

라이브러리 파일 'System.IO.FileNotFoundException'형식의 처리되지 않은 예외 파일 또는 어셈블리 'HtmlAgilityPack, 버전 = 1.8.0.0, 문화 = 중립, PublicKeyToken = bd319b19eaf3b43a'로드 할 수 없습니다. 지정한 파일을 찾을 수 없습니다.

그래서 Console 애플리케이션에도 HtmlAgilityPack 을 설치하려고했는데 어두운 마법처럼 완벽하게 작동했습니다.

그래서 내가 가져온 라이브러리에 사용 종속성 설치해야 추측 Console 온 또한, Console 때문에 응용 프로그램 NET Core 가져온 라이브러리의 모든 의존성와 호환되는지 확인해야합니다 NET Core .

IMHO 이것은 Microsoft에 의해 지정되어야하며,이 문제는 Visual Studio 자체에서 처리해야합니다. 왜 종속성 twits를 설치해야합니까?

당연히 나는 내 대답을 받아들이지 않을 것이고, 문제는 나에게 분명하고, 물론 지역 사회에 이르기 때문에이 상황을 설명하는 누군가를 기다릴 것이다.



Related

아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow