Estou trabalhando em um projeto que gera uma montagem. Acabei de perceber que um assembly adicional * .XmlSerializers.dll está sendo gerado. Por que esse arquivo é gerado automaticamente e para que é usado?
124
Estou trabalhando em um projeto que gera uma montagem. Acabei de perceber que um assembly adicional * .XmlSerializers.dll está sendo gerado. Por que esse arquivo é gerado automaticamente e para que é usado?
Respostas:
Na implementação do .NET , o XmlSerializer gera um assembly temporário para serializar / desserializar suas classes (por motivos de desempenho). Ele pode ser gerado rapidamente (mas leva tempo em cada execução) ou pode ser gerado durante a compilação e salvo nesta montagem que você está perguntando.
Você pode alterar esse comportamento nas opções do projeto (guia Compilar -> Opções avançadas de compilação -> Gerar montagens de serialização , Automático ou Ativado , respectivamente). O elemento correspondente no arquivo do projeto é GenerateSerializationAssemblies , por exemplo
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
,.fonte
Auto
, mas apenas um criou uma DLL de serialização.**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/pt-BR/library/kb4wyys2.aspxPARA SUA INFORMAÇÃO. As etapas exatas para impedir que o XmlSerializers.dll sejam geradas automaticamente são:
fonte
Acho que essa é a compilação JIT (Just in time) de serialisers XML por razões de desempenho.
Você obtém o mesmo com instâncias RegEx usando a opção RegexOptions.Compiled ativada.
Não sou especialista em .NET CLR, desculpe pela falta de detalhes técnicos precisos.
fonte
*.XmlSerializers.dll
são gerados usando o Sgen.exe [XML Serializer Generator Tool]Consulte Sgen.exe no MSDN
Normalmente,
Sgen.exe
é usado nos eventos Pós-Construção de Projetos. Veja se o seu projeto possui um evento pós-construção que gera o*.XmlSerializers.dll
fonte
O projeto gera apenas o project.XMLSerialisers.dll para aplicativos da Web. Para outros aplicativos, você deve executar o sgen separadamente.
fonte