Xamarin.ios と互換性のある WCF サービスのプロキシを生成するために、しばらくの間 Slsvcutil を使用してきました。私は問題を抱えたことはありませんでした。しかし、今日、プロキシを更新しようとしましたが、結果の契約は不完全でした。
以前は、次のコマンド ラインを使用していました。
"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>
//------------------------------------------------------------------------------