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 중국어 웹사이트의 기타 관련 기사를 참조하세요!