Share via


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

O Svcutil.exe pode exportar os metadados para serviços, contratos e tipos de dados em assemblies compilados, conforme a seguir:

  • 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. Esse é o comportamento padrão.

  • Para exportar metadados para um serviço compilado usando Svcutil.exe, especifique o assembly de serviço ou assemblies como parâmetros de entrada. Você deve usar a opção /serviceName para indicar o nome da 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 opção /dataContractOnly.

Observação

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

Para exportar metadados para contratos de serviço compilados

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

  2. Execute Svcutil.exe nos assemblies compilados.

    Observação

    Talvez seja necessário usar o switch /reference para especificar o caminho do arquivo para os assemblies dependentes.

    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 o 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 de serviço compilado usando o switch /serviceName para especificar o nome de configuração do serviço.

    Observação

    Talvez seja necessário usar o switch /reference para especificar o caminho do arquivo para os assemblies dependentes.

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

Para exportar metadados para contratos de dados compilados

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

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

    Observação

    Talvez seja necessário usar o switch /reference para especificar o caminho do arquivo para os assemblies dependentes.

    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>  

Confira também