私のサービス用のxmlserializer dllを生成しています。それは大きなwebserviceです - ビルドは約2分かかります。xmlserializer.dllは、ターゲットアセンブリが変更された場合には使用されません。
ビルド時間を短縮するために、xmlserializerのビルドを別のMakefileプロジェクトに分けました。インターフェイスが変更されていないことを考えれば、私は一度コンパイルできると思っていました。
しかし、サービスを再コンパイルすると、xmlserializerは使用されなくなり、実行時にシリアライザコードが生成されます。
誰でもこれを見ましたか?回避策はありますか? xmlserializerがサービスアセンブリに一致しなくなる原因は何ですか?
ありがとうございました。
更新:
[OK]を、私は半分の答えを見つけた...
は(生成された.csファイルのコードである)XmlSerializerVersionAttributeを記述します。
文書は言う...
インフラが一致する名前を持つアセンブリを見つけた場合、アセンブリがロードされ、見つかったアセンブリのバージョンと現在のバージョンの間の一致のためのインフラストラクチャをチェックしXmlSerializerVersionAttribute親アセンブリ。バージョンが一致しない場合、見つかったアセンブリは使用されません。代わりに、一時的なアセンブリがシリアル化のために生成されます。 .NET Frameworkのソースコードで探し
I手動のXmlSerializerアセンブリをロードし、上ParentAssemblyIdフィールドを変更した場合ParentAssemblyId、すなわち
Assembly.GetExecutingAssembly().GetModules()[0].ModuleVersionId
しかし、実際にはモジュールのバージョン番号であることを示しています属性、それはまだ動作しません - 私はフレームワークがシリアライザアセンブリの独自のコピーを読み込むと思います。