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
Compile sus implementaciones del contrato de servicios en una o más bibliotecas de clase.
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
Compile su implementación del servicio en un ensamblado ejecutable.
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>
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
Compile sus implementaciones del contrato de datos en una o más bibliotecas de clase.
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