2010-10-14 8 views
5

Ich habe eine verdammt lange Zeit versucht, eine benutzerdefinierte Richtlinie auf TFS2010 mithilfe von VSIX zu installieren.Bereitstellen benutzerdefinierter Richtlinie auf TFS2010 mit VSIX und PKGDEF

Ich habe die Richtlinie eingerichtet und funktioniert gut auf meinem Entwicklungs-PC, ich habe einen Wert für die Registrierung manuell geschrieben, und die Richtlinie wird erzwungen.

Das Problem besteht in der Einrichtung eines VSIX-Projekts und der Bereitstellung auf unseren anderen Entwicklungsmaschinen.

Ich folgte den Anweisungen 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

Die bevorzugte Methode, um die neuen VSIX Projekttyp in VS 2010 zu verwenden, zu sein scheint, füge ich ein VSIX Projekt zu meiner Lösung, aber die Anweisungen in der Blogeintrag sind sehr vage darüber, was als nächstes zu tun ist. Ich verstehe, dass die PKGDEF-Datei bedeutet, dass Sie bei der Bereitstellung keinen Wert in die Registrierung geschrieben haben und dass der Inhalt der PKGDEF-Datei beim Starten von Visual Studio in die Konfiguration übernommen wird. Das ist in Ordnung, aber wie baut man das VSIX-Paket auf?

Ich habe versucht, das benutzerdefinierte Richtlinienprojekt als VS-Paket-Typ zum VSIX-Projekt hinzuzufügen, aber wenn ich baue, bekomme ich den Fehler: Das Ziel "PkgdefProjectOutputGroup" existiert nicht im Projekt.

Ich habe versucht, nur die dll, die pkgdef-Datei als benutzerdefinierte Inhaltstyp, etc., aber nichts funktioniert.

Ich habe die PKGDEF-Datei im Blog so geändert, dass sie meinem eigenen Projekt entspricht.

Wenn ich das VSIX-Paket auf einem Entwicklungscomputer installieren, kann ich das Add-In im Erweiterungs-Manager in Visual Studio sehen, aber wenn ich die benutzerdefinierten Richtlinien in TFS überprüfe, bekomme ich den Fehler "ist nicht registriert".

Ich brauche wirklich eine Schritt-für-Schritt-Anleitung zum Einrichten eines VSIX-Projekts für die Bereitstellung einer benutzerdefinierten Richtlinie, kann jemand helfen?

+0

Haben Sie das Visual Studio SDK installiert? –

+0

Yeah Mann! Na sicher! Wie könnte ich ein VSIX-Projekt ohne es erstellen? – user343587

+0

Großartig. Haben Sie einen der Klassennamen oder den Namensraum geändert?In diesem Fall müssen Sie die Informationen zur Registrierungsart entsprechend aktualisieren. –

Antwort

6

Der Blogpost hat definitiv einen fehlenden Schritt. Ich denke, was der Autor beabsichtigte, war, dass Sie die pkgdef-Datei zum VSIX-Projekt (über den Vsixmanifest-Editor) als Inhalt des Typs VS-Paket hinzufügen. Fügen Sie dann einen Projektverweis zu dem Eincheckrichtlinienprojekt aus Ihrem VSIX-Projekt hinzu (wodurch die Checkin-Richtlinien-DLL zu Ihrem VSIX hinzugefügt wird).

Als eine Randnotiz .... wenn Sie "VS-Paket" als Inhaltstyp auswählen und dann auf ein Projekt zeigen ... muss es ein richtiges VS-Paket-Projekt sein (nicht nur eine Vanille C#/VB-Klasse) Bibliothek).

+0

Wenn ich mein C-Laufwerk nach der Datei pkgdef durchsuche, sind die einzigen Kopien, die ich sehen kann, die in meinem Entwicklungsordner - Sie würden erwarten, dass diese Datei in einem Ordner für Visual Studio-Erweiterungen bereitgestellt wird oder richtig? Vermisse ich einen weiteren Schritt? Eine andere Frage - ist die pkgdef-Datei im Artikel die komplette Datei oder nur ein Ausschnitt? Muss die Datei pkgdef mit einem Werkzeug erstellt werden, oder können Sie das Codebeispiel einfach kopieren und einfügen und für Ihre eigenen Bedürfnisse modifizieren? – user343587

+0

Ahhh ... einen Schritt habe ich vergessen zu erwähnen. Haben Sie die Datei pkgdef auf Build Action = Inhalt und Include in VSIX = True (Fenster Eigenschaften) festgelegt? Sie sollten es unter% LocalAppData% \ Microsoft \ VisualStudio \ 10.0Exp \ Extensions sehen, wenn Sie Ihr VSIX debuggen. Sie sollten das Snippet nur aus dem Blogpost verwenden können. –

+0

Aaron - danke, ja, ich habe diese Eigenschaften auf dem pkgdef eingestellt. Nachdem ich auf das VSIX-Paket geklickt habe, um es zu installieren, wird es ohne Fehler installiert und ich kann es in Visual Studio-Erweiterungen sehen. ABER, wenn ich mein C-Laufwerk nach dem pkgdef und der DLL suche, sind sie nur in meinem Entwicklungsordner - sollen sie irgendwo von der VSIX bei der Installation kopiert werden? Wenn ja, wie weise ich das VSIX dazu an? – user343587

1

Das Problem ist der Assemblyname "NArrange.CheckinPolicy.dll" stimmt nicht mit dem Namen in der Policies.pkgdef. Um dies zu korrigieren stellen Sie sicher, dass Ihre Policies.pkgdef wie folgt aussehen:

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

Zusätzlich würde ich weitere Verwirrung vermeiden, indem Sie den „Produktnamen“ in source.extension.vsixmanifest zu NArrange.CheckinPolicy ändern. Auf diese Weise stimmt die Assembly mit dem Produktnamen in VS Extensions überein.