web-dev-qa-db-ja.com

Visual Studio Codeを使用してWSDLファイルを参照する方法

重要な免責事項。この質問は WSDLへのプロキシを生成する 。それは VS Codeで参照を作成する でもありません。

Visual Studio Code(最新アップデート、v1.8、11月16日)を使用しており、WSDLおよびXSDファイルを使用して記述された外部Webサービスへの呼び出しを作成する必要があります。前述のエディターを使用してこれを実行したいので、できればすべてのプロキシを作成して自分自身を包む必要はありません。

これは可能ですか、それとも運が悪かったのですか?

VSコードで実行できない場合、最も簡単な代替手段は何ですか? VS15を使用してクラスと呼び出しを生成し、ファイルをコピーすることについて話しているのですか、それとも私がよく知らない巧妙な回避策がありますか?

7

手動作成(一から)

ゼロから構築し、Visual Studioがそれをどのように行うかを気にしない場合は、いくつかの基本 このソリューションからここでは 、および同じページの承認されたソリューションで参照される他のリンクから開始できます。

VisualStudioが使用するのと同じ方法を使用した手動作成

参考までに、以下のVisual Studioの参照追加メソッドによって生成されたファイルの一部は、サブフォルダーに保存されますWeb参照/ Example(ここで、Exampleは、参照へのアクセスに使用される変数の名前です)、以下が含まれます。

.mapファイル

<?xml version="1.0" encoding="utf-8"?>
<DiscoveryClientResultsFile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Results>
    <DiscoveryClientResult referenceType="System.Web.Services.Discovery.ContractReference" url="http://example.com/api/index.php?wsdl" filename="index.wsdl" />
  </Results>
</DiscoveryClientResultsFile>

.wsdlファイル(上記の「filename」パラメーターと同じ名前)

このファイルは完全な未加工のwsdlソースファイルです(適切にフォーマットされたxml)。

参照ファイル

このファイルには、すべてのメソッドとプロパティを初期化するコードが含まれており、System.Web.Services.Protocols.SoapHttpClientProtocolを拡張する基本クラスです。

クラスに割り当てられたプロパティ(古いVB.NETプロジェクトから削除しています:次のようになります:

<System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.6.1586.0"),  _
 System.Diagnostics.DebuggerStepThroughAttribute(),  _
 System.ComponentModel.DesignerCategoryAttribute("code"),  _
 System.Web.Services.WebServiceBindingAttribute(Name:="ExampleAPIBinding", [Namespace]:="urn:ExampleAPI"),  _
 System.Xml.Serialization.SoapIncludeAttribute(GetType(MyCustomType1)),  _
 System.Xml.Serialization.SoapIncludeAttribute(GetType(MyCustomType2)),  _

 Partial Public Class ExampleAPI
    Inherits System.Web.Services.Protocols.SoapHttpClientProtocol

 End Class

.datasource(タイプごとに1つのファイル)

サンプルコード

<?xml version="1.0" encoding="utf-8"?>
<!--
    This file is automatically generated by Visual Studio .Net. It is
    used to store generic object data source configuration information.
    Renaming the file extension or editing the content of this file may
    cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="MyMethodName" Version="1.0" xmlns="urn:schemas-Microsoft-com:xml-msdatasource">
   <TypeInfo>ExampleAPI.SOAP.ClientMerchant, Web References.SOAP.Reference.vb.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>

Visual Studioを使用してビルドし、VSCodeで再度開きます

Visual Studio内で、次の操作を実行できます(そして、結果をVSCodeプロジェクトにコピーします)

ステップ1

プロジェクトエクスプローラーでプロジェクトを右クリックし、[追加]> [サービス参照]を選択します。

Add > Service Reference


ステップ2

この画面で[詳細]をクリック

Add Service Reference


ステップ3

この画面で[Web参照の追加]をクリックします

Service Reference Settings


ステップ4

WSDLの場所への完全なURLを入力し、Enterキーを押します。

Add Web Reference


最後に

成功した場合(適切にフォーマットされたWSDLが見つかった場合)、[参照の追加]ボタンが有効になります。それをクリックすると、プロジェクトへの参照が追加されます。

6
Kraang Prime

Donet-svcutilを使用することもできます

https://docs.Microsoft.com/en-us/dotnet/core/additional-tools/dotnet-svcutil-guide?tabs=dotnetsvcutil2x

dotnet-svcutil https://svn.Apache.org/repos/asf/airavata/sandbox/xbaya-web/test/Calculator.wsdl
2
Julio Ramos

これは直接的なアプローチとして他の人を助けるかもしれません。 SDKに含まれているsvutil.exeツールを使用して、必要なプロキシクライアントを生成できます。ファイル用のフォルダーを作成する場合は、コマンドラインからそのフォルダーに移動し、ツールを実行すると、プロキシファイルと独自の構成で必要な構成要素が生成されます。

注:プロキシ出力言語を含む多くのオプションを設定できます。デフォルトはc#です。

使用しようとしているsvc WSをターゲットにしている場合、例: http://abc.dfe.com/myWebService.svc は次のようになります。

このサービスをテストするには、クライアントを作成し、それを使用してサービスを呼び出す必要があります。これは、次の構文でコマンドラインからsvcutil.exeツールを使用して実行できます。

svcutil.exe http://abc.dfe.com/myWebService.svc?wsdl

これにより、構成ファイルと、クライアントクラスを含むコードファイルが生成されます。 2つのファイルをクライアントアプリケーションに追加し、生成されたクライアントクラスを使用してサービスを呼び出します。

OPではないにしても、これが同じクエリを持つ誰かに役立つことを願っています。

1
ips1 38

Julioのコメントに続いて、.NET Coreで必要なすべての手順を次に示します(OSXの手順)。

  1. Dotnet-svcutilをインストールします。

    dotnet tool install --global dotnet-svcutil
    
  2. .bash_profileにツールパスを追加します。

    nano ~/.bash_profile
    

    この行を追加します。

    export PATH=$PATH:$HOME/.dotnet/tools
    

    プロファイルをリロードします。

    . ~/.bash_profile
    
  3. アプリまたはライブラリのパスに移動して、コマンドを実行します。サービス参照を有効にするパスにいる必要があります。例えば:

    cd MY-PROJECT-FOLDER/Library
    dotnet-svcutil PATH-TO-MY-WSDL/my-wsdl.xml
    
  4. 作成したファイルを.csprojに追加します。デフォルトでは、クリエイティブにServiceReference/Reference.csという名前が付けられます。ファイルの行は次のようになります。

    <Content Include="ServiceReference\Reference.cs" />
    
1
Shane