1

Xamarin.ios と互換性のある WCF サービスのプロキシを生成するために、しばらくの間 S​​lsvcutil を使用してきました。私は問題を抱えたことはありませんでした。しかし、今日、プロキシを更新しようとしましたが、結果の契約は不完全でした。

以前は、次のコマンド ラインを使用していました。

"C:\Program Files (x86)\Microsoft SDKs\Silverlight\v5.0\Tools\\SlSvcUtil.exe" http://localhost/Service.svc /out:Service.cs

そして、データ コントラクト サービスを生成します。現在、XmlSerialization 属性のみを含むサービス ファイルが生成されますが、これは明らかに機能しません。

そこで、DataContract のシリアル化を強制するようにコマンド ライン引数を変更しました。

"C:\Program Files (x86)\Microsoft SDKs\Silverlight\v5.0\Tools\\SlSvcUtil.exe" http://localhost/Service.svc /mc /serializer:DataContractSerializer /out:Service.cs

これにより、DataContract のシリアル化が正しく行われますが、私の C# プロキシはすべてのメッセージ コントラクトを完全に省略します (/mc修正する必要があると信じていました)。すべてのメソッド シグネチャは、引数として「オブジェクト」を受け入れます。以前は、すべての引数メンバーを記述する適切な完全なコントラクトでした。

私が見ることができる唯一の違いは、ランタイムのバージョンが変更されたことです...(生成されたプロキシファイルのヘッダーにマークされているように):

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:4.0.30319.18449
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:4.0.30319.34014
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
4

0 に答える 0