Compartir a través de


Cómo: Utilizar Svcutil.exe para exportar metadatos desde el código de servicio compilado

Svcutil.exe puede exportar metadatos para los servicios, contratos y tipos de datos en ensamblados compilados del siguiente modo:

  • Para exportar los metadatos para todos los contratos de servicios compilados para un conjunto de ensamblados utilizando Svcutil.exe, especifique los ensamblados como parámetros de entrada. Éste es el comportamiento predeterminado.
  • Para exportar los metadatos para un servicio compilado utilizando Svcutil.exe, especifique el ensamblado de servicio o ensamblados como parámetros de entrada. Debe utilizar la opción /serviceName para indicar el nombre de configuración del servicio que quiere exportar. Svcutil.exe carga automáticamente el archivo de configuración para el ensamblado ejecutable especificado.
  • Para exportar todos los tipos de contrato de datos dentro de un conjunto de ensamblados, utilice la opción /dataContractOnly.

Nota

Utilice la opción /reference para especificar las rutas de acceso del archivo a cualquier ensamblado dependiente.

Para exportar los metadatos para los contratos de servicios compilados

  1. Compile sus implementaciones del contrato de servicios en una o más bibliotecas de clase.

  2. Ejecute Svcutil.exe en los ensamblados compilados.

    Nota

    Quizás necesite utilizar el modificador /reference para especificar la ruta de acceso del archivo a cualquier ensamblado dependiente.

    svcutil.exe Contracts.dll
    

Para exportar los metadatos para un servicio compilado

  1. Compile su implementación del servicio en un ensamblado ejecutable.

  2. Cree un archivo de configuración para su ejecutable de servicio y agregue una configuración de servicio.

    <?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. Ejecute Svcutil.exe en el ejecutable de servicio compilado utilizando el modificador /serviceName para especificar el nombre de configuración del servicio.

    Nota

    Quizás necesite utilizar el modificador /reference para especificar la ruta de acceso del archivo a cualquier ensamblado dependiente.

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

Para exportar los metadatos para los contratos de datos compilados

  1. Compile sus implementaciones del contrato de datos en una o más bibliotecas de clase.

  2. Ejecute Svcutil.exe en los ensamblados compilados utilizando el modificador /dataContract para especificar que sólo se deberían generar los metadatos para los contratos de datos.

    Nota

    Quizás necesite utilizar el modificador /reference para especificar la ruta de acceso del archivo a cualquier ensamblado dependiente.

    svcutil.exe /dataContractOnly Contracts.dll
    

Ejemplo

El ejemplo siguiente muestra cómo generar los metadatos para una implementación de servicio simple y configuración.

Para exportar los metadatos para el contrato de servicios.

svcutil.exe Contracts.dll

Para exportar los metadatos para los contratos de datos.

svcutil.exe /dataContractOnly Contracts.dll

Para exportar los metadatos para la implementación del servicio.

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

<path> es la ruta de acceso a 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 también

Conceptos

Exportación e importación de metadatos

Otros recursos

ServiceModel Metadata Utility Tool (Svcutil.exe)