2009-06-29 16 views
19

Ich versuche, eine kontinuierliche Integration auf TFS 2008 aufzubauen. In dem Projekt, das ich erstellen möchte, verwende ich einen Schlüssel zum Signieren. Dieser Schlüssel verwendet ein Passwort. Ich kann es nicht bauen, weil TFS während des Builds einen Dialog anzeigen möchte, der nicht angezeigt werden kann. Ich denke, ich muss das Projekt manuell auf dem Server erstellen, aber nur die TFS-Explorer und Build-Teile sind auf dem Server installiert. Irgendwelche Vorschläge, wie ich mein Projekt richtig aufbauen kann?Team Foundation Server Build mit passwortgeschütztem Codesigning schlägt fehl

Dies ist der Fehler, der durch TFS gegeben:

C: \ WINDOWS \ Microsoft.NET \ Framework \ v3.5 \ Microsoft.Common.targets (1805,7): MSB4018 Fehler: Die " ResolveKeySource " Task ist unerwartet fehlgeschlagen. System.InvalidOperationException: Anzeigen eines modalen Dialogfelds oder Formulars , wenn die Anwendung nicht ausgeführt wird UserInteractive-Modus ist kein gültiger -Vorgang. Geben Sie ServiceNotification oder DefaultDesktopOnly-Stil an, um eine Benachrichtigung von einem Dienst anzuzeigen. bei System.Windows.Forms.Form.ShowDialog (IWin32Window Inhaber) bei System.Windows.Forms.Form.ShowDialog() bei Microsoft.Build.Tasks.ResolveKeySource.ResolveAssemblyKey() bei Microsoft.Build. (Tasks.ResolveKeySource.Execute)

Antwort

34

Diese blog post unten erläutert die genauen Schritte

Setup Key Files

Erstellen Sie ein passwortgeschütztes privates/öffentliches Schlüsselpaar (KeyPair.pfx) mithilfe des Visual Studio-Registers "Signieren" in den Eigenschaften eines Projekts. Extrahieren Sie den öffentlichen Schlüssel aus dem Schlüsselpaar und kopieren Sie ihn in eine separate Datei (Key.snk) sn.exe -p KeyPair.pfx Key.snk

Kopieren Sie die KeyPair.pfx auf Ihren Build-Server. Ich benutze C: \ Programme \ MSBuild \ KeyFile.pfx, weil auf sie dann von der MSBuild-Eigenschaft $ (MSBuildExtensionsPath) zugegriffen werden kann. Verschieben Sie die Datei "KeyPair.pfx" in einen sicheren sicheren Speicherbereich &. Bewahren Sie das Passwort ebenfalls geheim auf. Kopieren Sie die Datei Key.snk an einen freigegebenen Speicherort, an dem Ihre Entwickler darauf zugreifen können. Setup-Projekte für Signing

Für jede Assembly, die Sie signieren möchten:

  1. Öffnen Sie die Projekteigenschaften | Anmeldeseite
  2. Aktivieren Sie das Kontrollkästchen [X] Signiere die Baugruppe.
  3. Aktivieren Sie das Kontrollkästchen [X] Nur Verzögerungszeichen.
  4. Wählen Sie aus dem Dropdown-Menü für die Schlüsseldatei.
  5. Navigieren Sie zum freigegebenen Speicherort und wählen Sie den Schlüssel aus.snk-Datei
  6. Die snk-Datei wird in jedem Projektverzeichnis kopiert werden, dass Sie es zu
  7. Kopieren Sie die Schlüsseldatei von einem Ihrer Projekte in Projektmappen-Elemente zuweisen, so dass Sie es für den Testlauf Konfiguration verwenden können

Setup-Testlauf Konfiguration für Re-Signing

Wenn Sie Ihre Baugruppen Instrument wollen und Code Coverage für die Komponententests aktivieren, dann müssen Sie für die Wieder Unterzeichnung einer Schlüsseldatei angeben.

öffnen LocalTestRun.testrunconfig Auf der Code Coverage Registerkarte Datei, wählen Sie den Schlüssel als Re-Signing Key-Datei

Disable Strong-Namensüberprüfung auf Entwickler-Workstations

Da Sie Verzögerungs- sind Wenn Sie nur mit dem öffentlichen Schlüssel signieren, schlägt die Überprüfung der .NET CLR-Baugruppe bei lokal erstellten Assemblies fehl. Wenn die Überprüfung fehlschlägt, können Sie die Assemblys nicht ausführen oder debuggen.

Um dies in der Entwicklung zu umgehen, müssen Sie die Verifizierung starker Namen für Assemblys deaktivieren, die Sie lokal erstellen und mit Ihrem öffentlichen Schlüssel verzögern.

Öffnen Sie ein Visual Studio-Eingabeaufforderung Typ: sn.exe -tp Key.snk

Dies wird Ausgabe der Token einige Daten einschließlich.

Typ: sn -Vr *,YOUR_KEY_TOKEN

Beispiel: sn -Vr *,abcdef

Dies wird deaktivieren starke Überprüfung des Namens für alle mit Ihrem öffentlichen Schlüssel signiert Baugruppen. Sie können die aktuellen Einstellungen für stark mit Überprüfung des Namens Liste: sn -vl

Installation des Private Key dem Team beim Aufbau

Da der private Schlüssel (Key.pfx) Passwort geschützt ist - Team Build nicht zugreifen kann es. Dank Nagaraju Palla’s Blog: Using Password Protected Signing Keys in Team Build haben wir eine Lösung.

Logon zum Team Build-Server als Build-Dienstkonto öffnen Sie das Projekt in Visual Studio das Projektes in Visual Studio Erstellen Sie werden nach dem Passwort für die private Schlüsseldatei gefragt. Geben Sie das Kennwort ein Schließen Visual Studio & Abmelden Die private Schlüsseldatei wird jetzt im lokalen Zertifikatspeicher des Build-Dienstkontos installiert, und Team Build kann darauf zugreifen, ohne erneut nach dem Kennwort zu fragen. Dieser Zertifikatspeicher ist so sicher wie das Kennwort des Builddienstkontos. (Tipp: Machen Sie es genauso stark wie Ihr Keyfile Passwort)

aktualisiert TFSBuild.proj Script bauen

Team Build Zugang zum privaten Schlüsseldatei und das Passwort hat. Dies ermöglicht es, die Baugruppen vollständig zu signieren.

die Projekteinstellungen außer Kraft zu setzen und Team Build anweisen, die private Schlüssel-Datei zu verwenden, und partial-Signierung zu deaktivieren, müssen wir die CustomPropertiesForBuild Eigenschaft in TFSBuild.proj

Check-out Ihres TFSBuild.proj Build-Skript Suche einstellen für die Platzhalter-Eigenschaft (in der Nähe von Linie 130 in der Standardeinstellung) es Ersetzen sie mit dem folgenden: SignAssembly = true; Delay = false; AssemblyOriginatorKeyFile = $ (MSBuildExtensionsPath) \ Key.pfx Check-in, um die Änderungen einen Build Queue Überprüfen der Teambuild-Ausgabe

Um zu überprüfen, ob Team Build Ihre Assemblys korrekt benannt hat, können Sie das Dienstprogramm sn.exe verwenden, um die starke Namens-Signatur zu überprüfen.

Öffnen Sie ein Visual Studio-Eingabeaufforderung Typ: sn.exe -vf assemblyname.dll

Sie können auch alle Baugruppen gleichzeitig überprüfen:

Öffnen Sie ein Visual Studio-Eingabeaufforderung Typ : FOR% a IN (* .dll) DO sn.exe -vf% a

+0

Große Antwort, Danke! aber ich laufe in einigen Schwierigkeiten, wenn ich versuche, das Projekt manuell zu erstellen, um den Schlüssel zu installieren. Ich habe nicht das "normale" Visual Studio installiert, nur tfs explorer und tfs build. Bedeutet das, dass ich Team Dev installieren muss, um mein Projekt nur einmal zu erstellen? – Sorskoot

+0

Was ist die Fehlermeldung? –

+0

Ich erhalte keinen Fehler. Außer dem MSB4018 von meiner Frage, wenn tfs das Gebäude machen lässt. Ich bin nach dem Öffnen des Projekts in Visual Studio auf dem Build-Server steckengeblieben. Das gesamte Projekt ist ausgegraut, weil ich nur die Shell mit den Build-Diensten auf dem Server installiert habe. Ich denke, ich beaufsichtige etwas hier;) – Sorskoot

Verwandte Themen