MyAssembly.XmlSerializers.dll은 무엇을 위해 생성됩니까?


124

어셈블리를 생성하는 프로젝트를 진행 중입니다. 방금 추가 어셈블리 * .XmlSerializers.dll이 생성되는 것을 확인했습니다. 이 파일이 자동 생성되는 이유와 용도는 무엇입니까?


나는 그것이 왜 생성되었는지 이미 알고 있다고 생각합니다. 그렇지 않은 경우 프로젝트가 일종의 웹 서비스를 노출하기 때문에 생성됩니다. 항상 컴파일 시간 또는 런타임 중에 생성됩니다. 런타임에 임의의 이름으로 Temp 폴더에 생성됩니다
AaA

답변:


101

에서 .NET의 구현, XmlSerializer를은 (성능상의 이유로) 클래스를 역 직렬화 / 직렬화 임시 어셈블리를 생성합니다. 즉석에서 생성 할 수도 있지만 (실행할 때마다 시간이 걸립니다) 컴파일 중에 미리 생성하여 요청하는이 어셈블리에 저장할 수 있습니다.

프로젝트 옵션에서이 동작을 변경할 수 있습니다 (각각 컴파일 -> 고급 컴파일 옵션 -> 직렬화 어셈블리 생성 , Auto 또는 On 탭 ). 프로젝트 파일의 해당 요소는 GenerateSerializationAssemblies 입니다 (예 : <GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>.


21
프로젝트 설정이 자동 일 때 생성되는 경우 필요합니까? 응용 프로그램과 함께 X.XMLSerializers.dll을 배포하지 않으면 즉시 생성됩니까?
Rory

3
그렇다면 이러한 어셈블리를 사전로드하는 방법은 무엇입니까?
Carlo

1
@Rory, 나는이 질문이 오래되었다는 것을 알고 있지만 그럴 것 같습니다. 내 프로젝트 중 세 개가로 설정 Auto되었지만 하나만 직렬화 DLL을 만들었습니다.
ps2goat

4
**Generate Serialization Assemblies** Specifies whether the compiler will use the XML Serializer Generator Tool (Sgen.exe) to create XML serialization assemblies. Serialization assemblies can improve the startup performance of XmlSerializer if you have used that class to serialize types in your code. By default, this option is set to Auto, which specifies that serialization assemblies be generated only if you have used XmlSerializer to encode types in your code to XML. msdn.microsoft.com/en-us/library/kb4wyys2.aspx
ps2goat

2
VS2015 수동 변경 : 프로젝트 이름-> 속성 -> 빌드 -> (아래로 스크롤) 직렬화 어셈블리를 생성합니다.
Eido95

54

참고로. XmlSerializers.dll이 자동 생성되지 않도록하는 정확한 단계는 다음과 같습니다.

  1. VS에서 프로젝트 파일을 마우스 오른쪽 버튼으로 클릭하고 "속성"을 선택합니다.
  2. "Build"탭을 클릭합니다.
  3. "직렬화 어셈블리 생성"드롭 다운을 "자동"에서 "끄기"로 변경합니다.
  4. 재건하면 사라질 것입니다

17
예, 그러나 질문은 생성 되었는지 였습니다 !
Hemant

이것이 오래된 응답이라는 것을 알고 있지만 Win10 Ent 64 비트 시스템에서 컴파일 할 때 .NET 2.0 x86을 대상으로하는 Winforms 앱의 VS2015 업데이트 3에서는 "직렬화 어셈블리 생성"드롭 다운을 "Off"로 설정 한 다음 * .XmlSerializers를 설정해도됩니다. dll은 여전히 ​​생성됩니다. 내 앱이 ASMX 웹 서비스를 참조합니다. VS2015 업데이트 3의 버그일까요?
피터

6

나는 이것이 성능상의 이유로 XML 직렬 변환기의 JIT (Just in time) 컴파일이라고 생각합니다.

RegexOptions.Compiled 옵션을 켜면 RegEx 인스턴스에서도 동일한 결과를 얻을 수 있습니다.

저는 .NET CLR 전문가가 아닙니다. 정확한 기술 세부 사항이 부족해서 죄송합니다.


5

*.XmlSerializers.dll Sgen.exe [XML Serializer 생성기 도구]를 사용하여 생성됩니다.

MSDN에서 Sgen.exe 참조

일반적으로 Sgen.exe프로젝트의 빌드 후 이벤트에 사용됩니다. 프로젝트에 빌드 후 이벤트가 있는지 확인하십시오.*.XmlSerializers.dll


4

프로젝트는 웹 응용 프로그램에 대한 project.XMLSerialisers.dll 만 생성합니다. 다른 응용 프로그램의 경우 sgen을 별도로 실행해야합니다.


1
켜짐 또는 자동으로 설정하면 내 윈폼 응용 프로그램은 MyProject.XMLSerializers.dll를 생성
케빈 Driedger
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.