Condividi tramite


Procedure consigliate per l'implementazione di un plug-in del controllo codice sorgente

I seguenti dettagli tecnici utili in modo affidabile per distribuire un plug-in controllo del codice sorgente in Visual Studio.

Problemi di gestione della memoria

In la maggior parte dei casi, l'ambiente (IDE) di sviluppo integrato, che è il chiamante, rilascia e alloca memoria. Il plug-in controllo del codice sorgente restituisce le stringhe e altri elementi nel buffer allocati dal chiamante. Le eccezioni sono segnalate nelle descrizioni di funzioni specifiche in cui si verificano.

Matrici dei nomi file

Quando una matrice dei file viene passata, non viene passata come matrice contigua dei nomi file. Viene passata come matrice di puntatori ai nomi file. Ad esempio, in Funzione SccGet, i nomi file sono passati dal parametro di lpFileNames , dove lpFileNames in realtà è un puntatore a char **. lpFileNames[0] è un puntatore al nome, lpFileNames[1] è un puntatore al secondo nome, e così via.

Ampio modello

Tutti i puntatori sono 32 bit, anche nei sistemi operativi a 16 bit.

percorsi completi

Dove i nomi file e directory vengono specificati come argomenti, devono essere percorsi completi o percorsi UNC, senza le barre rovesciate finali. È responsabilità del plug-in controllo del codice sorgente di convertire questi percorsi relativi se si tratta di un requisito del sistema di controllo del codice sorgente sottostante.

Specificare un percorso completo per la DLL registrata

L'ide non più carica le DLL dai percorsi relativi, ad esempio. \NewProvider DLL). Un percorso completo della DLL deve essere specificato (ad esempio, C#: \Providers\NewProvider DLL). Questo requisito consolida la sicurezza dell' IDE e impedire il caricamento delle DLL non autorizzati o rappresentati del controllo del codice sorgente.

Controllo per un plug-in esistente di VSSCI quando si installa il plug-in controllo del codice sorgente

Un utente che intende installare il plug-in controllo del codice sorgente è già presente un plug-in controllo del codice sorgente esistente installato nel computer. Il programma di installazione (impostazione) per il plug-in creata deve determinare se vi sono valori esistenti per le chiavi del Registro di sistema appropriate. Se queste chiavi sono già impostate, il programma di installazione dovrà chiedere all' utente se registrare il plug-in del plug-in controllo del codice sorgente predefinito e sostituire quello già installato.

Codici e la creazione di rapporti risultato di errori

Il codice restituito di SCC_OK per una funzione di controllo del codice sorgente indica che l'operazione sia riuscito per tutti i file. Se l'operazione ha esito negativo, si prevede che restituisca l'ultimo codice di errore rilevato.

La regola per segnalare è che se si verifica un errore nell' IDE, l'ide è responsabile della creazione. Se si verifica un errore nel sistema di controllo del codice sorgente, il plug-in controllo del codice sorgente è responsabile della creazione. Ad esempio, “nessun file è attualmente selezionato„ verrebbe definito dall' IDE, mentre “questo file è già verificato„ verrebbe indicato dal plug-in.

La struttura di contesto

Durante la chiamata a Funzione SccInitialize, il chiamante passa il parametro di ppvContext , che è un handle non inizializzata a una void. Il plug-in controllo del codice sorgente possibile ignorare questo parametro o possibile allocare una struttura di qualsiasi tipo e inserire un puntatore alla struttura nel puntatore passato. L'ide non conosce la struttura, ma consente di passare un puntatore a questa struttura in ogni altra chiamata nel plug-in. Ciò fornisce informazioni importanti della cache di contesto al plug-in che possono utilizzare per gestire le informazioni sullo stato globali che persistono tra le chiamate di funzione senza utilizzare le variabili globali. Il plug-in è responsabile della versione della struttura con una chiamata a Funzione SccUninitialize.

Se il plug-in imposta SCC_CAP_REENTRANT dispone di un bit in Funzione SccInitialize (in particolare, nel parametro di lpSccCaps ), strutture più di contesto viene utilizzato per tenere traccia di tutti i progetti aperti.

Bitflags e altre opzioni del comando

Per ogni comando, Funzione SccGetad esempio, l'ide possibile specificare varie opzioni che modificano il comportamento del comando.

L'API supporta l'impostazione di alcune opzioni dall' IDE con il parametro di fOptions . Queste opzioni sono descritte in Flag di bit utilizzati da comandi specifici con comandi che influiscono su. Queste sono generalmente opzioni per il quale l'utente non obbligatorio.

La maggior parte delle opzioni utente-configurabili impostazione non sono definite in questo modo, in quanto possono essere molto diverse tra collegamenti del controllo del codice sorgente. di conseguenza, il meccanismo consigliato è un pulsante di Avanzate . Ad esempio, nella finestra di dialogo di ottenere , l'ide visualizza solo le informazioni che individua, ma visualizza anche un pulsante di Avanzate se il plug-in sono disponibili le opzioni per questo comando. Quando l'utente fa clic sul pulsante di Avanzate , l'ide chiama Funzione SccGetCommandOptions per consentire al plug-in controllo del codice sorgente utilizzate per richiedere informazioni, quali i bitflags o un data/ora. Il plug-in restituisce queste informazioni in una struttura passata all' indietro durante il comando di SccGet .

Vedere anche

Altre risorse

Plug-in del controllo del codice sorgente

Creare un plug-in del controllo del codice sorgente