Dela via


Anvisningar: Använd Svcutil.exe för att exportera metadata från kompilerad tjänstkod

Svcutil.exe kan exportera metadata för tjänster, kontrakt och datatyper i kompilerade sammansättningar enligt följande:

  • Om du vill exportera metadata för alla kompilerade tjänstkontrakt för en uppsättning sammansättningar med hjälp av Svcutil.exe anger du sammansättningarna som indataparametrar. Det här är standardbeteendet.

  • Om du vill exportera metadata för en kompilerad tjänst med hjälp av Svcutil.exe anger du tjänstsammansättningen eller sammansättningarna som indataparametrar. Du måste använda /serviceName alternativet för att ange konfigurationsnamnet för den tjänst som du vill exportera. Svcutil.exe läser automatiskt in konfigurationsfilen för den angivna körbara sammansättningen.

  • Om du vill exportera alla typer av datakontrakt inom en uppsättning sammansättningar använder du alternativet /dataContractOnly .

Kommentar

Använd alternativet /reference för att ange filsökvägarna till alla beroende sammansättningar.

Exportera metadata för kompilerade tjänstkontrakt

  1. Kompilera implementeringarna av tjänstkontraktet till ett eller flera klassbibliotek.

  2. Kör Svcutil.exe på de kompilerade sammansättningarna.

    Kommentar

    Du kan behöva använda växeln /reference för att ange filsökvägen till alla beroende sammansättningar.

    svcutil.exe Contracts.dll  
    

Exportera metadata för en kompilerad tjänst

  1. Kompilera tjänstimplementeringen till en körbar sammansättning.

  2. Skapa en konfigurationsfil för din körbara tjänst och lägg till en tjänstkonfiguration.

    <?xml version="1.0" encoding="utf-8" ?>  
    <configuration>  
      <system.serviceModel>  
        <services>  
          <service name="MyService" >  
            <endpoint address="finder" contract="IPeopleFinder" binding="wsHttpBinding" />  
          </service>  
        </services>  
      </system.serviceModel>  
    </configuration>  
    
  3. Kör Svcutil.exe på den körbara kompilerade tjänsten med hjälp av växeln /serviceName för att ange tjänstens konfigurationsnamn.

    Kommentar

    Du kan behöva använda växeln /reference för att ange filsökvägen till alla beroende sammansättningar.

    svcutil.exe /serviceName:MyService Service.exe /reference:path/Contracts.dll  
    

Exportera metadata för kompilerade datakontrakt

  1. Kompilera dina implementeringar av datakontrakt till ett eller flera klassbibliotek.

  2. Kör Svcutil.exe på de kompilerade sammansättningarna med växeln /dataContract för att ange att endast metadata för datakontrakt ska genereras.

    Kommentar

    Du kan behöva använda växeln /reference för att ange filsökvägen till alla beroende sammansättningar.

    svcutil.exe /dataContractOnly Contracts.dll  
    

Exempel

I följande exempel visas hur du genererar metadata för en enkel tjänstimplementering och konfiguration.

Så här exporterar du metadata för tjänstkontraktet.

svcutil.exe Contracts.dll  

Exportera metadata för datakontrakten.

svcutil.exe /dataContractOnly Contracts.dll  

Så här exporterar du metadata för tjänstimplementeringen.

svcutil.exe /serviceName:MyService Service.exe /reference:<path>/Contracts.dll  

<path> är sökvägen till Contracts.dll.

// The following service contract and data contracts are compiled into
// Contracts.dll.  
[ServiceContract(ConfigurationName="IPeopleFinder")]  
public interface IPersonFinder  
{  
    [OperationContract]  
    Address GetAddress(Person s);  
}  
  
[DataContract]  
public class Person  
{  
    [DataMember]  
    public string firstName;  
    [DataMember]  
    public string lastName;  
    [DataMember]  
    public int age;  
}  
  
[DataContract]  
public class Address  
{  
    [DataMember]  
    public string city;  
    [DataMember]  
    public string state;  
    [DataMember]  
    public string street;  
    [DataMember]  
    public int zipCode;  
    [DataMember]  
    public Person person;  
}  
// The following service implementation is compiled into Service.exe.
// This service uses the contracts specified in Contracts.dll.  
[ServiceBehavior(ConfigurationName = "MyService")]  
public class MyService : IPersonFinder  
{  
    public Address GetAddress(Person person)  
    {  
        Address address = new Address();  
        address.person = person;  
        return address;  
    }  
}  
<!-- The following is the configuration file for Service.exe. -->  
<?xml version="1.0" encoding="utf-8" ?>  
<configuration>  
  <system.serviceModel>  
    <services>  
      <service name="MyService">  
         <endpoint  address="finder"  
                    binding="basicHttpBinding"  
                    contract="IPeopleFinder"/>  
      </service>  
    </services>  
  </system.serviceModel>  
</configuration>  

Se även