Para que é gerado o MyAssembly.XmlSerializers.dll?

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?

Hemant
fonte
Eu acho que você já sabe por que é gerado. caso contrário, é gerado porque seu projeto está expondo um tipo de serviço da web. sempre é gerado durante o tempo de compilação ou durante o tempo de execução. em tempo de execução, ele é gerado na pasta Temp com um nome aleatório
AaA

Respostas:

101

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>,.

Grzenio
fonte
21
Se for gerado quando a configuração do projeto for Automática, isso significa que é necessário? o que acontece se você não implantar o X.XMLSerializers.dll com o aplicativo, ele será gerado rapidamente?
Rory
3
Então, como alguém faz o pré-carregamento desses conjuntos?
Carlo
1
@Rory, eu sei que esta pergunta é antiga, mas esse parece ser o caso. Três dos meus projetos foram definidos como Auto, mas apenas um criou uma DLL de serialização.
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/pt-BR/library/kb4wyys2.aspx
ps2goat 18/06/2015
2
Alteração manual do VS2015: clique com o botão direito do mouse no nome do projeto -> Propriedades -> Construir -> (Role para baixo) Gerar montagem de serialização.
Eido95
54

PARA SUA INFORMAÇÃO. As etapas exatas para impedir que o XmlSerializers.dll sejam geradas automaticamente são:

  1. No VS, clique com o botão direito do mouse no arquivo do projeto e selecione "Propriedades"
  2. Clique na guia "Build"
  3. Altere o menu suspenso "Gerar conjunto de serialização" de "Automático" para "Desativado"
  4. Reconstruir e ele se foi
jontsnz
fonte
17
Sim, mas a questão era por que é gerada!
Hemant
Eu sei que essa é uma resposta antiga, mas na atualização 3 do VS2015 em um aplicativo Winforms direcionado ao .NET 2.0 x86 quando compilado em um sistema Win10 Ent de 64 bits, mesmo quando a configuração "Gerar conjunto de serialização" suspensa para "Desativado" e os * .XmlSerializers. DLL ainda é gerado. Meu aplicativo faz referência a um serviço web ASMX. Talvez um bug na atualização 3 do VS2015?
Peter Peter
6

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.

Alan Christensen
fonte
5

*.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

abhilash
fonte
4

O projeto gera apenas o project.XMLSerialisers.dll para aplicativos da Web. Para outros aplicativos, você deve executar o sgen separadamente.

Malcolm
fonte
1
Meu aplicativo WinForms gera o MyProject.XMLSerializers.dll quando a configuração é
ativada