>백엔드 개발 >C++ >'직렬화 어셈블리 생성'이 XmlSerializer에서 항상 작동하지 않는 이유는 무엇이며 어떻게 해결할 수 있습니까?

'직렬화 어셈블리 생성'이 XmlSerializer에서 항상 작동하지 않는 이유는 무엇이며 어떻게 해결할 수 있습니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-15 10:58:44717검색

Why Doesn't

XML 직렬화 어셈블리 자동 생성

질문:

XmlSerializer를 사용할 때 직렬화 어셈블리 누락으로 인해 예외가 발생했습니다. Visual Studio 설정 "직렬화된 어셈블리 생성"이 이 문제를 해결하지 못하는 이유는 무엇이며 어떻게 해결할 수 있습니까?

정답:

SGen 작업이 sgen.exe 명령줄에 "/proxytypes" 스위치를 추가하여 프록시 유형 없이 직렬화 어셈블리가 생성되는 것을 방지하므로 "직렬화 어셈블리 생성" 설정만으로는 충분하지 않습니다.

이 문제를 해결하기 위해 Microsoft는 "/proxytypes" 스위치를 비활성화할 수 있는 "SGenUseProxyTypes" MSBuild 속성을 도입했습니다. 사용 방법은 다음과 같습니다.

1단계: 프록시 유형 생성 비활성화

Microsoft.Common.Targets 또는 C#/VB.targets를 가져오기 전에 프로젝트 파일에 다음 속성을 추가하세요.

<code class="language-xml"><sgenuseproxytypes>false</sgenuseproxytypes></code>

2단계: 직렬화 어셈블리 생성 활성화

프로젝트 속성에서 "직렬화된 어셈블리 생성" 설정이 활성화되어 있는지 확인하세요.

수정된 프로젝트 파일 구성:

<code class="language-xml"><PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
  <GenerateSerializationAssemblies>On</GenerateSerializationAssemblies>
  <SGenUseProxyTypes>false</SGenUseProxyTypes>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
  <GenerateSerializationAssemblies>On</GenerateSerializationAssemblies>
  <SGenUseProxyTypes>false</SGenUseProxyTypes>
</PropertyGroup></code>

이렇게 변경하면 Visual Studio는 수동 개입 없이 자동으로 Xml 직렬화 어셈블리를 생성합니다.

위 내용은 '직렬화 어셈블리 생성'이 XmlSerializer에서 항상 작동하지 않는 이유는 무엇이며 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.