programing

XmlSerializer에서 오류가 발생한 이유는 무엇입니까?

lastmoon 2023. 4. 17. 22:17
반응형

XmlSerializer에서 오류가 발생한 이유는 무엇입니까?

작업 중인 어플리케이션을 몇 가지 변경했는데, 이 코드 줄에서 다음과 같은 오류가 발생하기 시작했습니다.

Dim Deserializer As New Serialization.XmlSerializer(GetType(Groups))

여기 오류가 있습니다.

    BindingFailure was detected
    Message: The assembly with display name 'FUSE.XmlSerializers' failed to load in the 'LoadFrom' binding context of the AppDomain with ID 1. The cause of the failure was: System.IO.FileNotFoundException: Could not load file or assembly 'FUSE.XmlSerializers, Version=8.11.16.1, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
File name: 'FUSE.XmlSerializers, Version=8.11.16.1, Culture=neutral, PublicKeyToken=null'

    Message: The assembly with display name 'FUSE.XmlSerializers' failed to load in the 'LoadFrom' binding context of the AppDomain with ID 1. The cause of the failure was: System.IO.FileNotFoundException: Could not load file or assembly 'FUSE.XmlSerializers, Version=8.11.16.1, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
File name: 'FUSE.XmlSerializers, Version=8.11.16.1, Culture=neutral, PublicKeyToken=null'

=== Pre-bind state information ===
LOG: User = DOUG-VM\Doug
LOG: DisplayName = FUSE.XmlSerializers, Version=8.11.16.1, Culture=neutral, PublicKeyToken=null, processorArchitecture=MSIL
 (Fully-specified)
LOG: Appbase = file:///E:/Laptop/Core Data/Data/Programming/Windows/DotNet/Work Projects/NOP/Official Apps/FUSE WPF/Fuse/bin/Debug/
LOG: Initial PrivatePath = NULL
Calling assembly : System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: E:\Laptop\Core Data\Data\Programming\Windows\DotNet\Work Projects\NOP\Official Apps\FUSE WPF\Fuse\bin\Debug\FUSE.vshost.exe.config
LOG: Using machine configuration file from C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\config\machine.config.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Attempting download of new URL file:///E:/Laptop/Core Data/Data/Programming/Windows/DotNet/Work Projects/NOP/Official Apps/FUSE WPF/Fuse/bin/Debug/FUSE.XmlSerializers.DLL.
LOG: Attempting download of new URL file:///E:/Laptop/Core Data/Data/Programming/Windows/DotNet/Work Projects/NOP/Official Apps/FUSE WPF/Fuse/bin/Debug/FUSE.XmlSerializers/FUSE.XmlSerializers.DLL.
LOG: Attempting download of new URL file:///E:/Laptop/Core Data/Data/Programming/Windows/DotNet/Work Projects/NOP/Official Apps/FUSE WPF/Fuse/bin/Debug/FUSE.XmlSerializers.EXE.
LOG: Attempting download of new URL file:///E:/Laptop/Core Data/Data/Programming/Windows/DotNet/Work Projects/NOP/Official Apps/FUSE WPF/Fuse/bin/Debug/FUSE.XmlSerializers/FUSE.XmlSerializers.EXE.

무슨 일이야?

이 문제가 발생한 주된 이유는 직렬화 및 직렬화 해제하려는 유형이 일치하지 않았기 때문입니다.Observable Collection(그룹)을 직렬화하고 비즈니스 개체(그룹의 Observable Collection(그룹)을 상속한 그룹)을 직렬화하고 있었습니다.

그리고 이것도 문제의 일부였어요송신원 - http://social.msdn.microsoft.com/Forums/en-US/asmxandxml/thread/9f0c169f-c45e-4898-b2c4-f72c816d4b55/

이 예외는 XmlSerializer의 일반 작동의 일부입니다.이는 예상되며 프레임워크 코드 내에서 포착되어 처리됩니다.그냥 무시하고 계속하세요.디버깅 중에 문제가 발생하면 Visual Studio 디버거를 모든 예외 대신 처리되지 않은 예외에서만 중지하도록 설정합니다.

찾은 정보에 따르면 XmlSerializer와 관련된 BindingFailure 예외는 오류를 나타내지 않을 수 있으며 무시해도 되지만 디버깅모드에서는 VS 옵션을 설정하여 모든 예외를 표시할 수 있습니다.

출처 : https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=88566&wa=wsignin1.0

그런데, 이것은 첫 번째 답변에 언급된 것 중 하나입니다:).

FUSE.XmlSerializer 어셈블리를 찾을 수 없는 것 같습니다.Assembly Binding Log Viewer(Fuslogvw.exe)의 결과를 체크하고 검색 위치를 확인합니다(단, 위의 목록은 매우 꽉 찬 것 같습니다).

컴퓨터에서 이 어셈블리가 저장되어 있는 위치를 찾아 NGen을 실행하여 어떤 이유로 로딩에 실패했는지 확인합니다. DLL 파일이 Bin\Debug 디렉토리에 표시되는지 확인합니다.Visual Studio는 종속성의 영향을 받지 않는 것 같습니다.따라서 필요한 파일을 모두 가지고 있는지 확인해야 합니다.

어떻게 조립체를 로딩했습니까?Groups타이프요? 제 생각에 당신은 그걸 로딩한 것 같은데요Assembly.LoadFrom()XML 시리얼라이저가 같은 콘텍스트('LoadFrom' 콘텍스트)를 사용하여 시리얼라이제이션용 어셈블리를 로드하려고 하기 때문입니다.몇 .

  1. Assembly.Load()Assembly.LoadFrom().
  2. 를 「」에 합니다.AppDomain.AssemblyResolveCLR을 사용합니다.

일부 Visual Studio 프로젝트에서는 Binding Failure 및 System에 대해서만 Break on 예외를 비활성화하는 것이 좋습니다.IO.FileNotFoundException 입니다.

Visual Studio: +,DE 예외 대화 상자의 경우 +:

1) [ Managed Debugging Assistants ]의 [Binding Failure]체크박스를 끄겠습니다

2) [System](시스템)을 오프합니다.[ Common Language Runtime Exceptions ]아래 IO.FileNotFoundException.

아, 그게 낫네요:-)

...이 답변의 1/2은 10년 11월 24일 10시 12분에 스트레이저에 의해 주어졌습니다.

언급URL : https://stackoverflow.com/questions/294659/why-did-i-get-an-error-with-my-xmlserializer

반응형