Vorgehensweise: Verwenden von "Svcutil.exe" zum Exportieren von Metadaten aus kompiliertem DienstcodeHow to: Use Svcutil.exe to Export Metadata from Compiled Service Code

"Svcutil.exe" kann Metadaten für Dienste, Verträge und Datentypen in kompilierten Assemblys wie folgt exportieren:Svcutil.exe can export metadata for services, contracts, and data types in compiled assemblies, as follows:

  • Zum Exportieren von Metadaten für alle kompilierten Dienstverträge für eine Assemblygruppe mithilfe von "Svcutil.exe" geben Sie die Assemblys als Eingabeparameter an.To export metadata for all compiled service contracts for a set of assemblies using Svcutil.exe, specify the assemblies as input parameters. Dies ist das Standardverhalten.This is the default behavior.

  • Zum Exportieren von Metadaten für einen kompilierten Dienst mithilfe von "Svcutil.exe" geben Sie die Dienstassembly bzw. -assemblys als Eingabeparameter an.To export metadata for a compiled service using Svcutil.exe, specify the service assembly or assemblies as input parameters. Sie müssen die /serviceName-Option verwenden, um den Konfigurationsnamen des Diensts anzugeben, den Sie exportieren möchten.You must use the /serviceName option to indicate the configuration name of the service you want to export. "Svcutil.exe" lädt die Konfigurationsdatei für die angegebene ausführbare Assembly automatisch.Svcutil.exe automatically loads the configuration file for the specified executable assembly.

  • Um alle Datenvertragstypen innerhalb einer Assemblygruppe zu exportieren, verwenden Sie die /dataContractOnly-Option.To export all data contract types within a set of assemblies, use the /dataContractOnly option.

Hinweis

Zum Angeben von Dateipfaden zu abhängigen Assemblys verwenden Sie die /reference-Option.Use the /reference option to specify the file paths to any dependent assemblies.

So exportieren Sie Metadaten für kompilierte DienstverträgeTo export metadata for compiled service contracts

  1. Kompilieren Sie die Dienstvertragsimplementierungen in eine oder mehrere Klassenbibliotheken.Compile your service contract implementations into one or more class libraries.1

  2. Führen Sie "Svcutil.exe" auf den kompilierten Assemblys aus.Run Svcutil.exe on the compiled assemblies.

    Hinweis

    Zum Angeben des Dateipfads zur abhängigen Assembly müssen Sie möglicherweise den /reference-Schalter verwenden.You might need to use the /reference switch to specify the file path to any dependent assemblies.

    svcutil.exe Contracts.dll  
    

So exportieren Sie Metadaten füreinen kompilierten DienstTo export metadata for a compiled service

  1. Kompilieren Sie die Dienstimplementierung in eine ausführbare Assembly.Compile your service implementation into an executable assembly.

  2. Erstellen Sie eine Konfigurationsdatei für die ausführbare Dienstdatei, und fügen Sie eine Dienstkonfiguration hinzu.Create a configuration file for your service executable and add a service configuration.

    <?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. Zum Angeben des Konfigurationsnamen des Diensts führen Sie "Svcutil.exe" für die kompilierte ausführbare Dienstdatei mithilfe des /serviceName-Schalters aus.Run Svcutil.exe on the compiled service executable using the /serviceName switch to specify the configuration name of the service.

    Hinweis

    Zum Angeben des Dateipfads zur abhängigen Assembly müssen Sie möglicherweise den /reference-Schalter verwenden.You might need to use the /reference switch to specify the file path to any dependent assemblies.

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

So exportieren Sie Metadaten für kompilierte DatenverträgeTo export metadata for compiled data contracts

  1. Kompilieren Sie die Datenvertragsimplementierungen in eine oder mehrere Klassenbibliotheken.Compile your data contract implementations into one or more class libraries.

  2. Führen Sie "Svcutil.exe" für die kompilierten Assemblys mithilfe des /dataContract-Schalters aus, um anzugeben, dass nur Metadaten für Datenverträge generiert werden sollen.Run Svcutil.exe on the compiled assemblies using the /dataContract switch to specify that only metadata for data contracts should be generated.

    Hinweis

    Zum Angeben des Dateipfads zur abhängigen Assembly müssen Sie möglicherweise den /reference-Schalter verwenden.You might need to use the /reference switch to specify the file path to any dependent assemblies.

    svcutil.exe /dataContractOnly Contracts.dll  
    

BeispielExample

Im folgenden Beispiel wird veranschaulicht, wie Metadaten für eine einfache Dienstimplementierung und -konfiguration generiert werden.The following example demonstrates how to generate metadata for a simple service implementation and configuration.

So exportieren Sie Metadaten für den DienstvertragTo export metadata for the service contract.

svcutil.exe Contracts.dll  

So exportieren Sie Metadaten für DatenverträgeTo export metadata for the data contracts.

svcutil.exe /dataContractOnly Contracts.dll  

So exportieren Sie Metadaten für die DienstimplementierungTo export metadata for the service implementation.

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

Der <path> entspricht dem Pfad zu "Contracts.dll".The <path> is the path to 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>  

Siehe auchSee Also

ServiceModel Metadata Utility-Tool (Svcutil.exe)ServiceModel Metadata Utility Tool (Svcutil.exe)
Exportieren und Importieren von MetadatenExporting and Importing Metadata