WCFサービスライブラリは、通常のクラスライブラリが実行しないことを実行しますか?
編集:私は自分の答えを投稿しました。私は何かが足りないのですか?基本的に、両方ともいくつかのテンプレートクラスが追加された単なるクラスライブラリですか?
WCFサービスライブラリは、通常のクラスライブラリが実行しないことを実行しますか?
編集:私は自分の答えを投稿しました。私は何かが足りないのですか?基本的に、両方ともいくつかのテンプレートクラスが追加された単なるクラスライブラリですか?
両方作成して比較しました。これが私が見つけたものです。
WCF サービス ライブラリ
System.Runtime.Serialization
とへの参照を追加しますSystem.ServiceModel
。System.Data.DataSetExtensions
クラス ライブラリのように への参照は含まれません。IService1
ますCompositeType
。Service1
/client:"WcfTestClient.exe"
プロジェクトのプロパティにデバッグ コマンド ライン オプションとして追加しますWCF Options
プロジェクトのプロパティにタブを追加します。このタブには、同じソリューションで別のプロジェクトをデバッグするときに WCF サービス ホストを開始するオプションが含まれています。Sign the ClickOnce manifests
プロジェクト プロパティの [署名] タブのオプションを有効にします。このオプションは、クラス ライブラリでは無効になっていますまた、F5 で WCF サービス ホスト ユーティリティを実行します。お気づきの/client
ように、スイッチは WCF サービス ホストに渡され、どのクライアントを起動するかを伝えています。この場合、WCF テスト クライアントを起動するように指示されています。
これにより、かなり良いF5経験が得られます。サービスにブレークポイントを設定し、 をヒットF5し、テスト クライアントを使用してサービス操作を呼び出すと、ブレークポイントがヒットします。
クラス ライブラリを WCF ホスティング タイプとして使用して VS 2010 プロジェクトでテストしましたが、wsdl またはプロキシ クラスの生成に失敗します。
WCF プロジェクトは通常のクラス ライブラリとは異なります。これは、ソリューション/プロジェクト参照に多くの dll を追加し、(Service1.svc)テンプレートを追加するためです。これを IIS サーバーにデプロイし、svcutil.exe を使用して 2 つの出力ファイルを作成する必要があります。
ここで説明されているように:
最初の PropertyGroup 要素で、次の操作を行います。
ProductVersion 要素を探します。次のように製品バージョンを更新します。
<ProductVersion>8.0.50727</ProductVersion>
AssemblyName 要素の下に、次の要素を追加します。
<ProjectTypeGuids>{3D9AD99F-2412-4246-B90B-4EAA41C64699};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<StartArguments>/client:"WcfTestClient.exe"</StartArguments>
ファイルの最後までスクロールし、Import 要素の下に次の拡張子を追加します。
<ProjectExtensions>
<VisualStudio>
<FlavorProperties GUID="{3D9AD99F-2412-4246-B90B-4EAA41C64699}">
<WcfProjectProperties>
<AutoStart>True</AutoStart>
</WcfProjectProperties>
</FlavorProperties>
</VisualStudio>
</ProjectExtensions>