Delen via


Procedure: Svcutil.exe gebruiken om metagegevens te exporteren uit gecompileerde servicecode

Svcutil.exe kunt als volgt metagegevens exporteren voor services, contracten en gegevenstypen in gecompileerde assembly's:

  • Als u metagegevens wilt exporteren voor alle gecompileerde servicecontracten voor een set assembly's met behulp van Svcutil.exe, geeft u de assembly's op als invoerparameters. Dit is het standaardgedrag.

  • Als u metagegevens wilt exporteren voor een gecompileerde service met behulp van Svcutil.exe, geeft u de serviceassembly of assembly's op als invoerparameters. U moet de /serviceName optie gebruiken om de configuratienaam aan te geven van de service die u wilt exporteren. Svcutil.exe het configuratiebestand automatisch laadt voor de opgegeven uitvoerbare assembly.

  • Als u alle typen gegevenscontract in een set assembly's wilt exporteren, gebruikt u de /dataContractOnly optie.

Notitie

Gebruik de /reference optie om de bestandspaden naar afhankelijke assembly's op te geven.

Metagegevens exporteren voor gecompileerde servicecontracten

  1. Compileer uw servicecontract-implementaties in een of meer klassebibliotheken.

  2. Voer Svcutil.exe uit op de gecompileerde assembly's.

    Notitie

    Mogelijk moet u de /reference schakeloptie gebruiken om het bestandspad op te geven naar afhankelijke assembly's.

    svcutil.exe Contracts.dll  
    

Metagegevens voor een gecompileerde service exporteren

  1. Compileer uw service-implementatie in een uitvoerbare assembly.

  2. Maak een configuratiebestand voor het uitvoerbare bestand van uw service en voeg een serviceconfiguratie toe.

    <?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. Voer Svcutil.exe uit op het uitvoerbare bestand van de gecompileerde service met behulp van de /serviceName switch om de configuratienaam van de service op te geven.

    Notitie

    Mogelijk moet u de /reference schakeloptie gebruiken om het bestandspad op te geven naar afhankelijke assembly's.

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

Metagegevens exporteren voor gecompileerde gegevenscontracten

  1. Compileer uw gegevenscontract-implementaties in een of meer klassebibliotheken.

  2. Voer Svcutil.exe uit op de gecompileerde assembly's met behulp van de /dataContract schakeloptie om op te geven dat alleen metagegevens voor gegevenscontracten moeten worden gegenereerd.

    Notitie

    Mogelijk moet u de /reference schakeloptie gebruiken om het bestandspad op te geven naar afhankelijke assembly's.

    svcutil.exe /dataContractOnly Contracts.dll  
    

Opmerking

In het volgende voorbeeld ziet u hoe u metagegevens genereert voor een eenvoudige service-implementatie en -configuratie.

Metagegevens voor het servicecontract exporteren.

svcutil.exe Contracts.dll  

Metagegevens voor de gegevenscontracten exporteren.

svcutil.exe /dataContractOnly Contracts.dll  

Metagegevens exporteren voor de service-implementatie.

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

Het <path> is het pad naar 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>  

Zie ook