3

私がこれまでに読んだすべてのドキュメントは、ポータブル クラス ライブラリから Web サービス ライブラリを実行できることを示唆しています。

  • System.ServiceModel &
  • System.ServiceModel.Web

「WebGet」属性やその他の WCF Rest 機能などで使用できます。

ただし、名前空間を参照しようとすると、使用できないと表示され、コードで参照しても名前空間が表示されません。

これは通常、ポータブル クラス ライブラリでは使用できないが、名前空間はオブジェクト ブラウザーで表示できることを意味します。

対象とするフレームワークを次のように制限することさえ試みました。

  • .NET 4.03 以降
  • Silverlight 4 以降

しかし、喜びはありません。SL5 と .NET 4.5 を使用するだけでも名前空間は公開されません

何か案は?

4

2 に答える 2

1

答えは非常に単純ですNO

PCLプロジェクトではすべての基本的な[DataContract]/[ServiceOperation] / [DataMember]属性を使用できますが、Rest実装属性を何にも配置することはできません。

PCLの属性にできるだけ多くを提供し、具体的な実装にRest属性を適用するという簡単な答え(PCLに存在する必要があります)

また、PCLを使用すると、シリアル化可能なタグの多くが失われるため、すべてのモデルとプロパティに[DataContract] [DataMember]属性を追加してください。そうしないと、問題が発生します。

于 2012-12-07T12:33:16.500 に答える
0

これに関して、Visual Studio 2010 には何らかの欠陥があると思います。System.ServiceModelおよびSystem.ServiceModel.Webアセンブリは自動的に参照されるように見えますが、既定ではそうではなく、対応する名前空間は使用できません。

ServiceModel 名前空間が定義されていません

この問題を回避するには、 [参照の追加] ダイアログを開きます。すべてのアセンブリが参照されているように見えますが、どちらもプロジェクトの参照リストには含まれていません。

アセンブリが参照されているようです

目的のアセンブリを実際にプロジェクトに追加するには、リストからアセンブリを選択します。ここで、最初に [削除] をクリックし、すぐに [追加] をクリックします(または、リストでアセンブリを 2 回ダブルクリックします)。これを行うと、「削除/追加」されたアセンブリがプロジェクトの参照リストに明示的に表示されるようになります。

アセンブリの削除/追加

入力すると、対応する名前空間とクラスが利用できるようになりました。

ServiceModel 名前空間が利用可能

プロジェクトを正常にビルドできます。

これは、.NET Framework 4+、Silverlight 4+、WP7+、および Windows ストア アプリなど、最も広範なプラットフォームを含む場合でも機能するようです。これは、最新の PCL アドインを使用して VS 2010 でテストされています。

Visual Studio 2012 では、.NET ポータブル サブセットはモノリスとしてリストされ、サブセットの個々のアセンブリを参照 (非参照) することはできません。ただし、VS 2012 ではSystem.ServiceModel、新しいポータブル クラス ライブラリを作成すると、etc. アセンブリへのアクセスが自動的にカバーされるようです。

上記はすべて、Express Visual Studio 以外のバージョンの Windows 7 システムでテストされています。

于 2012-12-05T12:08:45.023 に答える