Procédure : utiliser Svcutil.exe pour exporter des métadonnées de code de service compilé
Svcutil.exe peut exporter les métadonnées pour des services, des contrats et des types de données dans des assemblys compilés, comme suit :
Pour exporter les métadonnées pour tous les contrats de service compilés pour un ensemble d'assemblys en utilisant Svcutil.exe, spécifiez les assemblys en tant que paramètres d'entrée. Il s'agit du comportement par défaut.
Pour exporter les métadonnées pour un service compilé en utilisant Svcutil.exe, spécifiez le ou les assemblys de service en tant que paramètres d'entrée. Vous devez utiliser l'option
/serviceName
pour indiquer le nom de configuration du service que vous souhaitez exporter. Svcutil.exe charge automatiquement le fichier de configuration pour l'assembly exécutable spécifié.Pour exporter tous les types de contrats de données dans un ensemble d'assemblys, utilisez l'option
/dataContractOnly
.
Notes
Utilisez l’option /reference
pour spécifier les chemins d’accès à tous les assemblys dépendants.
Pour exporter les métadonnées pour des contrats de service compilés
Compilez les implémentations de vos contrats de service dans une ou plusieurs bibliothèques de classes.
Exécutez Svcutil.exe sur les assemblys compilés.
Notes
Vous pouvez être amené à utiliser le commutateur
/reference
pour spécifier le chemin d’accès à tous les assemblys dépendants.svcutil.exe Contracts.dll
Pour exporter les métadonnées pour un service compilé
Compilez votre implémentation de service dans un assembly exécutable.
Créez un fichier de configuration pour l'exécutable de votre service et ajoutez une configuration de service.
<?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>
Exécutez Svcutil.exe sur l'exécutable du service compilé en utilisant le commutateur
/serviceName
pour spécifier le nom de configuration du service.Notes
Vous pouvez être amené à utiliser le commutateur
/reference
pour spécifier le chemin d’accès à tous les assemblys dépendants.svcutil.exe /serviceName:MyService Service.exe /reference:path/Contracts.dll
Pour exporter les métadonnées pour des contrats de données compilés
Compilez les implémentations de vos contrats de données dans une ou plusieurs bibliothèques de classes.
Exécutez Svcutil.exe sur les assemblys compilés en utilisant le commutateur
/dataContract
pour spécifier que seules les métadonnées pour les contrats de données doivent être générées.Notes
Vous pouvez être amené à utiliser le commutateur
/reference
pour spécifier le chemin d’accès à tous les assemblys dépendants.svcutil.exe /dataContractOnly Contracts.dll
Exemple
L'exemple ci-dessous montre comment générer les métadonnées pour l'implémentation et la configuration d'un service simple.
Pour exporter les métadonnées pour le contrat de service :
svcutil.exe Contracts.dll
Pour exporter les métadonnées pour les contrats de données :
svcutil.exe /dataContractOnly Contracts.dll
Pour exporter les métadonnées pour l'implémentation de service :
svcutil.exe /serviceName:MyService Service.exe /reference:<path>/Contracts.dll
<path>
est le chemin d'accès à 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>