Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die folgenden technischen Details können Ihnen dabei helfen, ein Quellcodeverwaltungs-Plug-In in Visual Studio zuverlässig zu implementieren.
Probleme bei der Speicherverwaltung
In den meisten Fällen gibt die integrierte Entwicklungsumgebung (Integrated Development Environment, IDE), die den Aufrufer darstellt, frei und weist Arbeitsspeicher zu. Das Quellcodeverwaltungs-Plug-In gibt Zeichenfolgen und andere Elemente in vom Aufrufer zugewiesenen Puffern zurück. Ausnahmen werden in Beschreibungen bestimmter Funktionen, in denen sie auftreten, aufgeführt.
Arrays von Dateinamen
Wenn ein Array von Dateien übergeben wird, wird es nicht als zusammenhängendes Array von Dateinamen übergeben. Sie wird als Array von Zeigern auf Dateinamen übergeben. Im SccGet werden die Dateinamen vom lpFileNames Parameter übergeben, wobei lpFileNames tatsächlich ein Zeiger auf ein char ** ist.
lpFileNames[0] ist ein Zeiger auf den Vornamen, lpFileNames[1] ist ein Zeiger auf den zweiten Namen usw.
Großes Modell
Alle Zeiger sind 32 Bit, auch auf 16-Bit-Betriebssystemen.
Vollqualifizierte Pfade
Wenn Dateinamen oder Verzeichnisse als Argumente angegeben werden, müssen sie vollqualifizierte Pfade oder UNC-Pfade sein, ohne abschließende Backslashes. Es liegt in der Verantwortung des Quellcodeverwaltungs-Plug-Ins, diese in relative Pfade zu übersetzen, wenn dies eine Anforderung des zugrunde liegenden Quellcodeverwaltungssystems ist.
Angeben eines vollqualifizierten Pfads für die registrierte DLL
Die IDE lädt DLLs nicht mehr aus relativen Pfaden (z. B . .\NewProvider.dll). Ein vollständiger Pfad der DLL muss angegeben werden (z. B. C:\Providers\NewProvider.dll). Diese Anforderung stärkt die Sicherheit der IDE, indem verhindert wird, dass nicht autorisierte oder imitierte Quellcodeverwaltungs-DLLs geladen werden.
Überprüfen Sie ein vorhandenes VSSCI-Plugin bei der Installation des Quellcodeverwaltungs-Plugins.
Ein Benutzer, der ihr Quellcodeverwaltungs-Plug-In installieren möchte, verfügt möglicherweise bereits über ein vorhandenes Quellcodeverwaltungs-Plug-In auf dem Computer. Das Installationsprogramm (Setup) für das von Ihnen erstellte Plug-In sollte bestimmen, ob es vorhandene Werte für die relevanten Registrierungsschlüssel gibt. Wenn diese Schlüssel bereits festgelegt sind, sollte ihr Installationsprogramm den Benutzer fragen, ob Sie Ihr Plug-In als Standard-Quellcodeverwaltungs-Plug-In registrieren und das bereits installierte Plug-In ersetzen möchten.
Fehlerergebniscodes und Berichterstellung
Der SCC_OK Rückgabecode für eine Quellcodeverwaltungsfunktion gibt an, dass der Vorgang für alle Dateien erfolgreich war. Wenn der Vorgang fehlschlägt, wird erwartet, dass der letzte aufgetretene Fehlercode zurückgegeben wird.
Die Regel für die Berichterstellung besteht darin, dass die IDE, wenn ein Fehler in der IDE auftritt, für die Berichterstellung verantwortlich ist. Wenn im Quellcodeverwaltungssystem ein Fehler auftritt, ist das Quellcodeverwaltungs-Plug-In für die Berichterstellung verantwortlich. Beispielsweise würde gemeldet, dass derzeit keine Dateien ausgewählt sind von der IDE, während gemeldet werden würde, dass diese Datei bereits ausgecheckt ist vom Plug-In.
Die Kontextstruktur
Während des Aufrufs von SccInitialize übergibt der Aufrufer den ppvContext Parameter, bei dem es sich um ein nicht initialisiertes Handle handelt, an eine leere. Das Quellcodeverwaltungs-Plug-In kann diesen Parameter ignorieren oder eine Struktur beliebiger Art zuordnen und einen Zeiger auf diese Struktur in den übergebenen Zeiger setzen. Die IDE versteht diese Struktur nicht, übergibt jedoch einen Zeiger auf diese Struktur bei jedem anderen Aufruf innerhalb des Plug-Ins. Dadurch werden wertvolle Cacheinformationen für den Kontext für das Plug-In bereitgestellt, mit denen globale Zustandsinformationen beibehalten werden können, die über Funktionsaufrufe hinweg bestehen, ohne globale Variablen zu verwenden. Das Plug-In ist dafür verantwortlich, die Struktur bei einem Aufruf der SccUninitialize freizugeben.
Wenn das Plug-In das SCC_CAP_REENTRANT Bit in SccInitialize (insbesondere im lpSccCaps Parameter) festlegt, werden mehrere Kontextstrukturen verwendet, um alle geöffneten Projekte nachzuverfolgen.
Bitflags und andere Befehlsoptionen
Für jeden Befehl, z. B. SccGet, kann die IDE viele Optionen angeben, die das Verhalten des Befehls ändern.
Die API unterstützt die Einstellung bestimmter Optionen durch die IDE über den fOptions Parameter. Diese Optionen werden in Bitflags, die von bestimmten Befehlen verwendet werden, zusammen mit den Befehlen, die sie beeinflussen, beschrieben. Im Allgemeinen sind dies Optionen, für die der Benutzer nicht aufgefordert wird.
Die meisten benutzerkonfigurierbaren Einstellungsoptionen sind auf diese Weise nicht definiert, da sie in den Plug-Ins für die Quellcodeverwaltung sehr unterschiedlich sind. Daher ist der empfohlene Mechanismus eine Schaltfläche "Erweitert ". Beispielsweise zeigt die IDE im Dialogfeld "Abrufen " nur Informationen an, die sie versteht, aber auch eine Schaltfläche "Erweitert ", wenn das Plug-In Optionen für diesen Befehl enthält. Wenn der Benutzer auf die Schaltfläche "Erweitert " klickt, ruft die IDE die SccGetCommandOptions auf, damit das Quellcodeverwaltungs-Plug-In den Benutzer zur Eingabe von Informationen auffordert, z. B. Bitflags oder ein Datum/Uhrzeit. Das Plug-In gibt diese Informationen in einer Struktur zurück, die während des SccGet Befehls zurückgesendet wird.