私は、私たちの会社内で広く使用されるWCFサービスを作成しています。ビルドプロセスの一環としてWCFクライアントプロキシを生成し、サービスのクライアントがこのプロセスを何度も繰り返す必要がないようにアセンブリを作成します。誰もがこれを達成するために知っている方法はありますか? MSBuildの既存ビルドタスクはありますか?ビルドプロセスの一部としてWCFプロキシを生成する
答えて
などのプロジェクトは、ここで私がやって巻き取るものです:
1)私は、クライアントコード
を生成するサービスを持ってプロジェクトを作成します。
a) Takes the compiled WCF Service assembly, runs svcutil.exe on it to extract XSD and WSDL metadata for all the services in the Service assembly.
b) Runs svcutil.exe again, this time on the extracted XSD and WSDL files to generate a .cs file containing the client
c) Run csc.exe to compile the generated client code into a separate assembly.
3)「AfterBuild」ターゲットにのMSBuildタスクを挿入します2)次のことを行いのMSBuildタスクを作成します。サービスを含むプロジェクトの
サービスをビルドするたびに、複数のプロジェクトで同じWeb参照を再生成/生成することなく、複数の他のプロジェクトが参照できるクライアントコードを含むアセンブリが自動的に生成されます。 Web参照ジェネレータで生成された複数のファイルではなく、プロジェクトファイル内の1行を更新するだけで、単一のアセンブリを参照してより簡単に更新できます。興味があれば、MSBuildタスクのコードとXMLスニペットを使用してそれらのコードを送信できます。
私は任意の組み込みのタスクを認識していないよ、これは私がそれを行う方法です。
は、プロジェクトを作成し、svcutilを経由してプロキシクラスを生成し、プロジェクトに追加します。 (1)svcutilを呼び出して上のクラスを上書きし、(2)プロジェクトをビルドするMSBuildスクリプトを作成します。
あなたが望むものは得られませんか?
T4
テンプレートを見て、そのようT4Toolbox
単に別のクラスライブラリプロジェクトを作成するだけではいかがですか。そのプロジェクトでは、必要なサービスごとに「サービス参照の追加」を使用します。
他のコードでは、単にクラスライブラリのクラスを使用できます。
これは信じられないほどマニュアルなので、プロジェクトとしてこのようにして、クライアントアセンブリを自動的に生成させることができます。何も保守する必要はなく、人々はプロジェクトを見つけてコンパイルする必要はありません。 –
最初に参照を作成する場合を除いて、どのように手動ですか?サービスが変更されたときにのみ更新する必要があります。次に、作成した他のライブラリコードと同じ方法で、そのプロジェクトの出力を処理します。 –
作成したMSBuildのアプローチは、達成したいもの(現在はバッチファイルを使用しています)を正確ににします。 MSBuildタスクとXMLスニペットを投稿/送信してください!
私は同じ問題を解決しようとしていました。ここで終わったことがあります。 .csprojのAfterBuildターゲットで、SDKパスをフェッチするタスクを追加し、Execコマンドを使用してsvcutil.exeを実行します。私は&を使っていました。パスにスペースが含まれているためです。
<Target Name="AfterBuild">
<GetFrameworkSdkPath>
<Output TaskParameter="Path" PropertyName="SdkPath"/>
</GetFrameworkSdkPath>
<Exec Command=""$(SdkPath)bin\NETFX 4.5.1 Tools\svcutil.exe" $(TargetPath)"/>
</Target>
- 1. アンマネージドC++でWCFプロキシを生成
- 2. Team Servicesビルドプロセスの一部としてテストを実行するときの問題
- 3. WCFプロキシの生成パスの種類を選択しますか?
- 4. VSO/TFS - ビルドプロセスの一部として新しい名前でファイルをコピーする
- 5. Visual Studioのビルドプロセスの一部としてtypescript \ tsファイルをコンパイルする2017
- 6. WCFプロキシを介してブロードキャスト
- 7. Structuremapを使用してシングルトンWCFプロキシを作成する方法
- 8. WCFプロキシが正しく生成されない
- 9. WCF PerSesson InstanceContextModeはSVCUtilを使用したプロキシの生成を防止します
- 10. cmake:ビルドプロセスの一部を正常にテストします。
- 11. TFSビルドの一部としてMSIを生成
- 12. WCFが別のプロキシを生成するのはなぜですか?
- 13. 生成されたWCFプロキシ設定はサーバのローカル名を使用します
- 14. 外部API呼び出し後にWCFプロキシが失敗する
- 15. サービスをホストせずにASyncパターンをWCFサービスに追加せずにSilverlight用のWCFプロキシを生成します
- 16. msbuildプロセスの一部としてatomまたはrssフィードを生成する
- 17. Java Webapp:ファイルを生成し、JSPの一部として表示しますか?
- 18. 部分クラスを使用してWCFプロキシを拡張し、OnDeserializing:OnDeserializingが発生しない
- 19. jshintをビルドプロセスの一部として自動化するにはどうすればいいですか?
- 20. .NETビルドプロセスの一部としてネイティブDLLをビルドするにはどうすればよいですか?
- 21. ビルドプロセスの一環としてコマンドラインツールを実行
- 22. WCFサービスのプロキシ - クローズ()と私はWCFプロキシを呼び出すために以下のコードを持って
- 23. 動的プロキシとwcfシリアル化の問題を使用する一般的なIPropertyChangedNotifier
- 24. WCFプロキシの使用
- 25. cglibを使用してカスタムフィールドでプロキシを生成するには?
- 26. 一部のドメインのプロキシのみ
- 27. Doctrineでプロキシを生成する
- 28. Spring AOP - プロキシの生成エラー
- 29. DynamoDBのプロキシとしてAPIを作成
- 30. JavaFXプロキシを作成すると、UnsupportedOperationExceptionが発生する
このソリューションのコードを投稿できますか?私がやっていることはまさにそのことです。下の記事のように、私はバッチファイルを使用していて、停止したい。 – Jonathan
@aloncatzは、MSBuildで必要なコマンドを実行するためのおおよそのアイデアを持っています。上記の解決策を実行した後で、さらにいくつかのステップを踏んで、アセンブリをナゲットパッケージにコンパイルして、ナゲットパッケージを社内のナゲットサーバーに公開します。 –