回答:
.NET実装で、XmlSerializerをは(パフォーマンス上の理由から)あなたのクラスをデシリアライズ/シリアライズするための一時アセンブリを生成します。オンザフライで生成できます(ただし、実行するたびに時間がかかります)、またはコンパイル中に事前生成して、要求しているこのアセンブリに保存できます。
(タブあなたは、プロジェクトオプションでこの動作を変更することができますコンパイル - > 高度なコンパイルオプション > - シリアル化アセンブリを生成し、自動またはオンそれぞれ)。プロジェクトファイル内の対応する要素はGenerateSerializationAssemblies<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
です。たとえば、です。
Auto
ましたが、1つだけがシリアル化DLLを作成しました。
**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
ご参考までに。XmlSerializers.dllが自動生成されないようにする正確な手順は次のとおりです。
これは、パフォーマンス上の理由から、XMLシリアライザーのJIT(ジャストインタイム)コンパイルだと思います。
RegExOptions.Compiledオプションをオンにして、RegExインスタンスで同じことを行います。
私は.NET CLRのエキスパートではありません。正確な技術的な詳細が不足しているため、申し訳ありません。
*.XmlSerializers.dll
Sgen.exe [XML Serializer Generator Tool]を使用して生成されます
MSDNのSgen.exeを参照してください
通常、これSgen.exe
はプロジェクトのビルド後イベントで使用されます。あなたのプロジェクトにポストビルドイベントがあり、*.XmlSerializers.dll
プロジェクトは、Webアプリケーション用のproject.XMLSerialisers.dllのみを生成します。他のアプリケーションでは、sgenを個別に実行する必要があります。