2010-10-14 8 views
5

Sto provando un sacco di tempo a tentare di installare un criterio personalizzato su TFS2010 utilizzando VSIX.Distribuzione di criteri personalizzati su TFS2010 tramite VSIX e PKGDEF

Ho il criterio attivo e funzionante e funziona correttamente sul mio PC di sviluppo, ho scritto manualmente un valore nel registro e il criterio è applicato.

Il problema è la creazione di un progetto VSIX e la distribuzione nelle altre macchine di sviluppo.

Ho seguito le istruzioni in:

http://blogs.msdn.com/b/jimlamb/archive/2010/03/31/how-to-implement-package-and-deploy-custom-check-in-policy-for-tfs-2010.aspx

Il metodo preferito sembra essere quello di utilizzare il nuovo tipo di progetto VSIX in VS 2010, ho aggiungere un progetto VSIX alla mia soluzione, ma le istruzioni del i post di blog sono molto vaghi su cosa fare dopo. La mia comprensione è che il file PKGDEF significa che non è necessario scrivere un valore nel registro durante la distribuzione e il contenuto del file PKGDEF viene inserito nella configurazione quando si avvia Visual Studio. Va bene, ma come si crea il pacchetto VSIX?

Ho provato ad aggiungere il progetto di politica personalizzato al progetto VSIX come tipo di pacchetto VS, ma quando compio ottengo l'errore: Il target "PkgdefProjectOutputGroup" non esiste nel progetto.

Ho provato ad aggiungere solo la DLL, il file pkgdef come un tipo di contenuto personalizzato, ecc, ma non funziona.

Ho modificato il file PKGDEF nel blog in modo che corrisponda al mio progetto.

Quando installo il pacchetto VSIX su una macchina di sviluppo, posso vedere il componente aggiuntivo in Gestione estensioni in Visual Studio, ma quando controllo le politiche personalizzate in TFS, ottengo l'errore "non è registrato".

Ho davvero bisogno di una procedura dettagliata per impostare un progetto VSIX per implementare un criterio personalizzato, qualcuno può aiutarti?

+0

Avete installato Visual Studio SDK? –

+0

Sì, amico! Ovviamente! Come posso creare un progetto VSIX senza di esso? – user343587

+0

Grande. Hai cambiato nessuno dei nomi di classe o dello spazio dei nomi?In tal caso, dovrai aggiornare di conseguenza le informazioni sul tipo di registrazione. –

risposta

6

Il post del blog ha sicuramente un passaggio mancante. Penso che l'autore abbia voluto aggiungere il file pkgdef al progetto VSIX (tramite l'editor vsixmanifest) come Content of type VS Package. Quindi, aggiungere un riferimento al progetto del criterio di controllo dal progetto VSIX (che causerà l'aggiunta della DLL del criterio di verifica al VSIX).

Come nota a margine .... quando si seleziona "Pacchetto VS" come tipo di contenuto e quindi si punta a un progetto ... deve essere un progetto VS Package adeguato (non solo una classe C#/VB vanilla biblioteca).

+0

Se cerco il mio disco C per il file pkgdef, le uniche copie che riesco a vedere sono quelle nella mia cartella di sviluppo: ci si aspetterebbe di vedere questo file distribuito in una cartella di estensioni di Visual Studio o seomthing, giusto? Mi manca un altro passaggio? Un'altra domanda: il file pkgdef nell'articolo è il file completo o solo uno snippet? Il file pkgdef deve essere generato con uno strumento oppure puoi solo copiare e incollare il codice di esempio e modificarlo per le tue esigenze? – user343587

+0

Ahhh ... un passo che ho dimenticato di menzionare. Hai impostato il file pkgdef su Build Action = Content and Include in VSIX = True (finestra Proprietà)? Dovresti vederlo in% LocalAppData% \ Microsoft \ VisualStudio \ 10.0Exp \ Extensions quando esegui il debug di VSIX. Dovresti essere in grado di usare semplicemente lo snippet dal post del blog. –

+0

Aaron - grazie, sì, ho queste proprietà impostate su pkgdef. Dopo aver fatto clic sul pacchetto VSIX per installarlo, si installa senza errori e posso vederlo nelle estensioni di Visual Studio. MA, quando cerco il mio C drive per il pkgdef e la dll, sono solo nella mia cartella di sviluppo - dovrebbero essere copiati da qualche parte su VSIX all'installazione? In tal caso, come si ordina a VSIX di farlo? – user343587

1

Il problema è il nome dell'assembly "NArrange.CheckinPolicy.dll" non corrisponde al nome in Policies.pkgdef. Per correggere questo assicurarsi che il Policies.pkgdef assomiglia a questo:

[$RootKey$\TeamFoundation\SourceControl\Checkin Policies] 
"TeamFoundation.Samples.CheckinPolicies"="$PackageFolder$\NArrange.CheckinPolicy.dll" 

Inoltre vorrei evitare ulteriore confusione, cambiando il "nome del prodotto" in source.extension.vsixmanifest a NArrange.CheckinPolicy. In questo modo l'assieme corrisponderà al nome del prodotto in VS Extensions.

Problemi correlati