* U K I Y A H O N P O *
Nel mezzo del cammin di nostra vita mi ritrovai per una selva oscura,
che la diritta via era smarrita.
ホーム
一覧
検索
最終更新
リンク
ヘルプ
ソース
新規
リンク
手動リンク
自動相互リンク
駄でべWiki:FrontPage
リンク元
検索キー一覧
自動相互リンク表
ヘルプ
整形ルール
プラグインマニュアル
浮子屋商店もよろしく。
C#コード断片/2.0/XMLSerializerの挙動について
の編集
Top
>
C#コード断片
>
2.0
> XMLSerializerの挙動について
* [2.0]XMLSerializerの挙動について [#nead55d1] .NET2.0から sgen.exe(XMLSerializerプリコンパイル生成ツール)が提供された。 使用して気づいたことを記載しておく。 ** 使い方 [#zd6dda58] //sgenを実行するには、vcvars32.batを実行してパスを通しておく //デバッグ用 sgen /f /debug /a:.\bin\debug\foobar.exe //リリース用 sgen /f /a:.\bin\release\foobar.exe /f 上書き可能 /a: このアセンブリに含まれるすべての型のXMLSerializerを作成する /debug デバッグ情報を含める 上記を実行すると、foobar.XmlSerializers.dll が生成される。 ** 気づいたこと [#y59406c5] -コードを変更する必要は無い。 -実行時、コード内にXML(De)Serializerのインスタンス作成があると、 --EXEと同じディレクトリに○○.XmlSerializers.dll があれば、そこから対応する型のプリコンパイル済みのアセンブリを読み出してインスタンス化されるようだ。 --もし無い場合は内部で「ファイルが存在しない」例外が発生し、そこから自動的に(.NET1.xと同じように)動的にコンパイルされ生成されるようだ。 -従って、プリコンパイルしておいた方が若干高速に動作すると思われる。 --しかし体感的にはあまり変わらない。 -XMLSerializerで使わない型までプリコンパイルしておくのは無駄っぽいが、/t を利用した場合は1つの型のみサポートされるため、プリコンパイルしておきたい型を複数指定することはできないようだ。 -プリコンパイルしておくことにより、日本語環境でXMLSerializerの動的コンパイルが凍る不具合(http://support.microsoft.com/default.aspx?scid=kb;ja;899153)が解消できるかどうかは不明である。 -そもそも上記不具合が、.NET2.0環境においても再現するかどうか定かでない。
タイムスタンプを変更しない
* [2.0]XMLSerializerの挙動について [#nead55d1] .NET2.0から sgen.exe(XMLSerializerプリコンパイル生成ツール)が提供された。 使用して気づいたことを記載しておく。 ** 使い方 [#zd6dda58] //sgenを実行するには、vcvars32.batを実行してパスを通しておく //デバッグ用 sgen /f /debug /a:.\bin\debug\foobar.exe //リリース用 sgen /f /a:.\bin\release\foobar.exe /f 上書き可能 /a: このアセンブリに含まれるすべての型のXMLSerializerを作成する /debug デバッグ情報を含める 上記を実行すると、foobar.XmlSerializers.dll が生成される。 ** 気づいたこと [#y59406c5] -コードを変更する必要は無い。 -実行時、コード内にXML(De)Serializerのインスタンス作成があると、 --EXEと同じディレクトリに○○.XmlSerializers.dll があれば、そこから対応する型のプリコンパイル済みのアセンブリを読み出してインスタンス化されるようだ。 --もし無い場合は内部で「ファイルが存在しない」例外が発生し、そこから自動的に(.NET1.xと同じように)動的にコンパイルされ生成されるようだ。 -従って、プリコンパイルしておいた方が若干高速に動作すると思われる。 --しかし体感的にはあまり変わらない。 -XMLSerializerで使わない型までプリコンパイルしておくのは無駄っぽいが、/t を利用した場合は1つの型のみサポートされるため、プリコンパイルしておきたい型を複数指定することはできないようだ。 -プリコンパイルしておくことにより、日本語環境でXMLSerializerの動的コンパイルが凍る不具合(http://support.microsoft.com/default.aspx?scid=kb;ja;899153)が解消できるかどうかは不明である。 -そもそも上記不具合が、.NET2.0環境においても再現するかどうか定かでない。