2012-03-19 7 views
2

VB.NET과 C# 둘 다 VS 2010에서 자동으로 생성되는 직렬화 어셈블리의 잘 알려진 문제점을 해결하려고합니다. 프로젝트 설정에서 "직렬화 어셈블리 생성"옵션은 웹 이외의 프로젝트에는 적용되지 않습니다 (http://blog.devstone.com/aaron/archive/2008/02/07/2778.aspx 외 참조). 따라서 serializer 호출은 매우 불행한 파일 I/O 예외를 생성하며 치료법은 없습니다. 위에서 제안한 방법은 VS2010에서 작동하지 않는 것으로 나타나며 SGEN은/proxytypes가 활성화 된 상태로 계속 실행됩니다.비 웹 프로젝트 용 XML 직렬화 어셈블리

답변

4

솔루션 :

<PropertyGroup> 
    <SGenUseProxyTypes>false</SGenUseProxyTypes> 
    <SGenPlatformTarget>$(Platform)</SGenPlatformTarget> 
</PropertyGroup> 

첫 번째 줄은 악을 해제 :

설정 평소와 같이 ON으로 프로젝트 설정에서 "직렬화 어셈블리를 생성", 는 다음 .proj 파일에이 XML을 추가/proxytypes 스위치. 선택한 플랫폼이 AnyCPU 이외의 다른 것이면 두 번째 줄이 필요합니다. 생략되면 직렬화 어셈블리가 AnyCPU로 작성되며 x86 또는 x64 일 수있는 주 어셈블리에 바인딩되지 않습니다.

+0

+1 매우 도움이되었습니다. 한 가지 중요한 점은 직렬화 어셈블리를 생성하는 프로젝트가 있고 우리는 SGenPlatformTarget을 지정하지 않는다는 것입니다. 그러나 x86 플랫폼 지정자는 AnyCPU가 아닌 어셈블리에 포함되어 있습니다. 이유가 확실하지 않습니다. 어떤 통찰력도 위대한 alexkai 일 것입니다. –