.NET은 XML 직렬화 어셈블리를 사용하여 개체 직렬화 및 역직렬화를 관리합니다. 이러한 어셈블리는 일반적으로 자동으로 생성되지만 누락된 경우 FileNotFoundException
로 XML을 읽는 동안 XmlSerializer
오류가 발생할 수 있습니다. sgen.exe
을 사용하여 어셈블리를 수동으로 생성할 수 있지만 Visual Studio 내에서 자동화하는 것이 좋습니다.
도전:
Visual Studio의 "직렬화 어셈블리 생성" 설정이 항상 신뢰할 수 있는 것은 아닙니다. /proxytypes
와 함께 sgen.exe
스위치를 사용하여 프록시 유형이 없으면 어셈블리 생성을 방지합니다.
해결책:
직렬화 어셈블리 생성을 안정적으로 자동화하려면 /proxytypes
스위치를 우회하세요. 이는 SGenUseProxyTypes
MSBuild 속성을 프로젝트 파일에 추가하고 false
로 설정하면 달성됩니다. 이는 프록시 유형 존재 여부에 관계없이 어셈블리 생성을 강제합니다.
구현 단계:
프로젝트의 .csproj
파일(또는 이에 상응하는 파일)을 편집하고 디버그 및 릴리스 구성을 위해 <PropertyGroup>
섹션에 다음을 추가합니다.
<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>
프로젝트의 대상 플랫폼(예: x86
)과 일치하도록 필요한 경우 AnyCPU
플랫폼 조건을 조정하는 것을 잊지 마세요. 이 수정 후 Visual Studio는 XML 직렬화 어셈블리를 자동으로 생성하여 직렬화 및 역직렬화 중 FileNotFoundException
오류를 방지합니다.
위 내용은 Visual Studio가 .NET에서 XML 직렬화 어셈블리를 자동으로 생성하도록 하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!