Gewusst wie: Registrieren Sie einen Dienst
Das verwaltete Paketframework (MPF) stellt Attribute bereit, um die Registrierung verwalteter Dienste zu steuern. Das RegPkg-Hilfsprogramm diese Attribute verwendet, um einen Dienst mit Visual Studiozu registrieren.
Beispiel
Der folgende Code besteht aus Visual Studio-Erweiterbarkeits-Beispiele.
<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 registriert den SMyGlobalService-Dienst mit Visual Studio. Weitere Informationen zu DefaultRegistryRootAttribute und PackageRegistrationAttribute finden Sie unter Gewusst wie: Registriert ein VSPackage.
Robuste Programmierung
Um es einfacher zu machen, ohne einen Dienstanbieter Kompilieren Sie den Dienst clienten zu ändern, oder umgekehrt, können Sie den Dienst und die dazugehörigen Schnittstellen in einem separaten Einbaumodul definieren. Der folgende Code ist von der IMyGlobalService.cs-Datei im Beispiel 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 ist erforderlich, um die Schnittstelle aus nicht verwaltetem Code abzurufen.
Hinweis
Obwohl Sie den gleichen Typ oder GUID für den Dienst und die Schnittstelle verwenden können, wird empfohlen, die zwei trennen, da ein Dienst verschiedene Schnittstellen verfügbar machen kann.
Siehe auch
Konzepte
Weitere Ressourcen
Registering VSPackages