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
Autres ressources
Registering VSPackages