Partilhar via


Como: Usar Svcutil.exe para exportar metadados do código de serviço compilado

Svcutil.exe pode exportar metadados para serviços, contratos e tipos de dados em assemblies compilados, da seguinte maneira:

  • Para exportar metadados para todos os contratos de serviço compilados para um conjunto de assemblies usando Svcutil.exe, especifique os assemblies como parâmetros de entrada. Este é o comportamento predefinido.

  • Para exportar metadados para um serviço compilado usando Svcutil.exe, especifique o assembly ou assemblies de serviço como parâmetros de entrada. Você deve usar a /serviceName opção para indicar o nome de configuração do serviço que deseja exportar. Svcutil.exe carrega automaticamente o arquivo de configuração para o assembly executável especificado.

  • Para exportar todos os tipos de contrato de dados dentro de um conjunto de assemblies, use a /dataContractOnly opção.

Nota

Use a /reference opção para especificar os caminhos de arquivo para quaisquer assemblies dependentes.

Para exportar metadados para contratos de serviço compilados

  1. Compile suas implementações de contrato de serviço em uma ou mais bibliotecas de classes.

  2. Execute Svcutil.exe nos assemblies compilados.

    Nota

    Talvez seja necessário usar o /reference switch para especificar o caminho do arquivo para qualquer assembly dependente.

    svcutil.exe Contracts.dll  
    

Para exportar metadados para um serviço compilado

  1. Compile sua implementação de serviço em um assembly executável.

  2. Crie um arquivo de configuração para seu executável de serviço e adicione uma configuração de serviço.

    <?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. Execute Svcutil.exe no executável do serviço compilado usando o /serviceName switch para especificar o nome de configuração do serviço.

    Nota

    Talvez seja necessário usar o /reference switch para especificar o caminho do arquivo para qualquer assembly dependente.

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

Para exportar metadados para contratos de dados compilados

  1. Compile suas implementações de contrato de dados em uma ou mais bibliotecas de classes.

  2. Execute Svcutil.exe nos assemblies compilados usando o /dataContract switch para especificar que apenas metadados para contratos de dados devem ser gerados.

    Nota

    Talvez seja necessário usar o /reference switch para especificar o caminho do arquivo para qualquer assembly dependente.

    svcutil.exe /dataContractOnly Contracts.dll  
    

Exemplo

O exemplo a seguir demonstra como gerar metadados para uma implementação e configuração de serviço simples.

Para exportar metadados para o contrato de serviço.

svcutil.exe Contracts.dll  

Para exportar metadados para os contratos de dados.

svcutil.exe /dataContractOnly Contracts.dll  

Para exportar metadados para a implementação do serviço.

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

O <path> é o caminho para 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>  

Consulte também