アセンブリを生成するプロジェクトに取り組んでいます。追加のAssembly * .XmlSerializers.dllが生成されていることに気付きました。このファイルが自動生成される理由とその用途は?
。NET 実装では、XmlSerializerは(パフォーマンス上の理由で)クラスをシリアル化/逆シリアル化するための一時的なアセンブリを生成します。その場で生成できますが(実行ごとに時間がかかります)、コンパイル中に事前生成して、このアセンブリに保存することもできます。
この動作は、プロジェクトオプション(tabCompile->Advanced Compile Options->シリアル化アセンブリの生成、AutoまたはOn、それぞれ)。プロジェクトファイル内の対応する要素は、GenerateSerializationAssembliesです。たとえば、<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
。
参考までに。 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を個別に実行する必要があります。