Partager via


Comment : enregistrez un service

Managed package (MPF) fournit des attributs pour contrôler l'alignement des services gérés. L'utilitaire de RegPkg utilise ces attributs pour enregistrer un service avec Visual Studio.

Exemple

Le code qui suit est de Exemples d'extensibilité Visual Studio.

<DefaultRegistryRoot("Microsoft\VisualStudio\8.0Exp")> _
<PackageRegistration(UseManagedResourcesOnly:=True)> _
<ProvideService(GetType(SMyGlobalService))> _
<System.Runtime.InteropServices.Guid("d695001c-f46a-407b-a1c9-54c35ef8ce87")> _
Public NotInheritable Class ServicesPackage
    Inherits Package
[DefaultRegistryRoot(@"Microsoft\VisualStudio\8.0Exp")]
[PackageRegistration(UseManagedResourcesOnly = true)]
[ProvideService(typeof(SMyGlobalService))]
[System.Runtime.InteropServices.Guid("d695001c-f46a-407b-a1c9-54c35ef8ce87")]
public sealed class ServicesPackage : Package

ProvideServiceAttribute enregistre le service de SMyGlobalService avec Visual Studio. Pour plus d'informations sur DefaultRegistryRootAttribute et PackageRegistrationAttribute, consultez Comment : enregistrez un VSPackage.

Programmation fiable

Pour simplifier le recompiler un fournisseur de services sans modifier le client de service, ou vice versa, vous pouvez définir le service et ses interfaces dans un module d'assembly distinct. Le code suivant est à partir de le fichier d'IMyGlobalService.cs dans l'exemple de Reference.Services (c#).

<Guid("fafafdfb-60f3-47e4-b38c-1bae05b44240")> _
Public Interface SMyGlobalService
End Interface

<Guid("ba9fe7a3-e216-424e-87f9-dee001228d03")> _
<ComVisible(True)> _
Public Interface IMyGlobalService
    Sub GlobalServiceFunction()
    Function CallLocalService() As Integer 
End Interface
[Guid("fafafdfb-60f3-47e4-b38c-1bae05b44240")]
public interface SMyGlobalService { }

[Guid("ba9fe7a3-e216-424e-87f9-dee001228d03")]
[ComVisible(true)]
public interface IMyGlobalService
{
    void GlobalServiceFunction();
    int CallLocalService();
}

ComVisibleAttribute est requis pour obtenir l'interface de code non managé.

Notes

Bien que vous puissiez utiliser le même type ou GUID pour le service et l'interface, nous recommandons que vous séparez les deux étant donné qu'un service peut exposer différentes interfaces.

Voir aussi

Concepts

service Essentials

Autres ressources

Registering VSPackages