Das Ausführen des tSQLt-Projekts aus Quellen schlägt aufgrund der Nichtübereinstimmung mit dem öffentlichen Token fehl


8

Ich versuche einige Verbesserungen für das tSQLt-Framework vorzunehmen und bin größtenteils fertig, kann dies aber nicht, da nur wenige Tests in Bezug auf das Zertifikat, das ich nicht berührt habe, immer noch fehlschlagen:

 [exec] |18|[InstallExternalAccessKeyTests].[test creates correct certificate in master]                                                       |    120|Failure|
 [exec] |19|[InstallExternalAccessKeyTests].[test tSQLt can be set to EXTERNAL ACCESS after InstallExternalAccessKey executed]                 |    333|Failure|
 [exec] |20|[InstallExternalAccessKeyTests].[test tSQLtExternalAccessKey install data is signed with same key as tSQLt.clr]                    |     10|Failure|

Der fehlerhafte Fehler ist:

Expected: %publickeytoken=8c9a92de0f9c7794,%
Actual: tsqltclr, version=1.0.7216.13228, culture=neutral, publickeytoken=8d3f4bf59e4c22fd, processorarchitecture=msil

Ich werde versuchen, meinen Installationsprozess zu beschreiben.

Ich habe diese Framework-Quellen anhand der folgenden Richtlinie installiert . Danach konnte ich das Projekt jedoch nicht starten, da es mit den folgenden Fehlern fehlschlug und die gesamte Problemlösung in diesem SO-Beitrag durchgeführt wurde :

[exec]
C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets (2482,5): Fehler MSB3325: Die folgende Schlüsseldatei kann nicht importiert werden: tSQLtOfficialSigningKey.pfx. Die Schlüsseldatei ist möglicherweise passwortgeschützt. Um dies zu korrigieren, versuchen Sie, das Zertifikat erneut zu importieren, oder installieren Sie das Zertifikat manuell in den Strong Name CSP mit dem folgenden Schlüsselcontainernamen: VS_KEY_C20B79DE0583A5C1 [E: \ Source \ tSQLt \ tSQLtCLR \ tSQLtCLR \ tSQLtCLR.csproj] [exec]
C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets (2482,5): Fehler MSB3321: Der Import der Schlüsseldatei "tSQLtOfficialSigningKey.pfx" wurde abgebrochen. [E: \ Source \ tSQLt \ tSQLtCLR \ tSQLtCLR \ tSQLtCLR.csproj]

Um dieses Problem zu lösen, habe ich für jedes Projekt ohne Kennwort neue Schlüssel erstellt:

Geben Sie hier die Bildbeschreibung ein

Ich sehe, dass es snkDatei erstellt hat, nicht als Original pfx. Danach habe ich versucht, den Build erneut auszuführen, und er ist mit den oben genannten Fehlern fehlgeschlagen.


Warum überhaupt tsqlFramework verwenden? Es enthält so viel Code in Ihrem Datenbankcode, viele SQL CLR-Funktionen. Ich habe versucht, wenn für 2 große Projekte im Laufe des Jahres zu verwenden, und es scheitert schlecht. Es ist besser, einen eigenen Test mit .net oder / und SQL zu erstellen und diese über ein Tool auszuführen, um eine parallele Ausführung zu erhalten.
Gotqn

Ich bin mir nicht sicher, wovon genau du sprichst. Dort gibt es nur einige SQL CLR-Funktionen. Außerdem ist es sehr stabil und "scheitert schlecht" klingt einfach seltsam. Sogar Redgate hat dieses Framework in seine Produkte aufgenommen. Sie können danach googeln und feststellen, dass es das bisher beste Framework für Unit-Tests ist.
Dmitrij Kultasev

Ich weiß, dass es das Beste ist, aber es ist nicht gut. Ich habe es oft benutzt und an einigen Online-Demonstrationen teilgenommen, Verbesserungen und ähnliches angefordert, aber am Ende erstelle ich eigene Tests. Das ist mein Rat - verlassen Sie sich nicht auf diesen Rahmen.
Gotqn

Ich benutze es schon seit vielen Jahren und es hat immer gut für mich funktioniert, auch bei den großen Projekten.
Dmitrij Kultasev

Antworten:


0

Wie hier angegeben

Der folgende Fehler kann beim Erstellen von Projekten für Microsoft Visual Studio 2008 - 2015 auftreten.

Fehler : Die folgende Schlüsseldatei kann nicht importiert werden: mykey.pfx. Die Schlüsseldatei ist möglicherweise passwortgeschützt.

Die folgende Schlüsseldatei kann nicht importiert werden: mykey.pfx. Die Schlüsseldatei ist möglicherweise passwortgeschützt. Um dies zu korrigieren, versuchen Sie erneut, das Zertifikat zu importieren, oder installieren Sie das Zertifikat manuell auf dem CSP mit starkem Namen mit dem folgenden Schlüsselcontainernamen: VS_KEY_C1D3ACB8FBF1AGK4

LÖSUNG 1:

Klicken Sie auf Start> Alle Programme> Microsoft Visual Studio> Visual Studio-Tools> Visual Studio-Eingabeaufforderung. Geben Sie den folgenden Befehl ein

sn -i "c:\Pathtofile\.pfx" VS_KEY_C1D3ACB8FBF1AGK4

Hinweis : Die Datei sn.exe mit dem Parameter -i installiert ein Schlüsselpaar aus einem Schlüsselcontainer mit dem Namen. Importieren Sie die PFX-Datei erneut in Visual Studio.

LÖSUNG 2:

  • Öffnen Sie die Projekteigenschaften.

  • Klicken Sie auf den Abschnitt Signieren.

  • Wenn dort "Wählen Sie eine Schlüsseldatei mit starkem Namen:" steht, wählen Sie den aktuellen Wert erneut aus dem Dropdown-Feld aus
  • Visual Studio fordert Sie nun zur Eingabe des Kennworts auf. Geben Sie es ein. Möglicherweise wird eine weitere Fehlermeldung angezeigt: "Es wurde versucht, auf ein nicht vorhandenes Token zu verweisen."> Sie können diese Meldung einfach ignorieren.

  • Klicken Sie auf die Schaltfläche "Passwort ändern"

  • Geben Sie das ursprüngliche Passwort in alle drei Felder ein und klicken Sie auf OK. Wenn Sie sich ändern möchten
  • Ihr Passwort (oder wenn Ihr altes Passwort nicht den Komplexitätsanforderungen entspricht), können Sie dies jetzt tun.
  • Wiederholen Sie dies für jede Schlüsseldatei in Ihrem Projekt. Speichern Sie Ihr Projekt und führen Sie eine Neuerstellung durch.

LÖSUNG 3:

Holen Sie sich eine Kopie von openssl für Windows unter slproweb.com oder verwenden Sie eine Linux-Box, wie sie alle haben. Führen Sie die folgenden Schritte aus, um in eine Schlüsseldatei zu exportieren

openssl pkcs12 -in certfile.pfx -out backupcertfile.key

openssl pkcs12 -export -out certfiletosignwith.pfx -keysig -in backupcertfile.key

Dann können Sie in den Projekteigenschaften die PFX-Datei verwenden

LÖSUNG 4:

Die endgültige Lösung für dieses Problem besteht darin, Visual Studio zum Signieren aufzugeben und stattdessen Signtool zu verwenden.

Aktualisierte Antwort

Es scheint, dass Ihr TFS Build Service-Konto keine erforderliche Berechtigung für den Zugriff auf die signingKey.pfx auf dem Build Agent-Computer hat. Stellen Sie sicher, dass Sie diese Datei zuerst auf dem Build Agent-Computer haben.

Befolgen Sie dann die folgenden Schritte:

  1. Melden Sie sich beim Build-Agenten als lokales Build-Service-Konto an (besser Administratorberechtigung)
  2. Öffnen Sie eine Visual Studio-Eingabeaufforderung und navigieren Sie zu dem Verzeichnis, in dem der Schlüssel gespeichert ist
  3. Befehl sn –i signingKey.pfx VS_KEY_EFCA4C5B6DFD4B4Feingeben (Stellen Sie sicher, dass Sie den Schlüsselnamen verwenden, der in der Fehlermeldung angezeigt wird.)
  4. Wenn Sie zur Eingabe eines Kennworts aufgefordert werden, geben Sie das Kennwort für die pfx-Datei ein

  5. Dann bauen Sie es wieder auf

Hinweis: Wenn Sie Visual Studio nicht als Administrator ausführen, versuchen Sie dies ebenfalls.

Weitere Details finden Sie in der Antwort von Brandon Manchester. Die Schlüsseldatei 'blah.pfx' kann nicht importiert werden - Fehler 'Die Schlüsseldatei ist möglicherweise passwortgeschützt.'


Ich kenne kein Passwort für einen Schlüssel
Dmitrij Kultasev

Hast du eine Idee?
Dmitrij Kultasev

1
Für alle in Ihrem Fall bereitgestellten Lösungen ist ein Passwort erforderlich. Ich habe keinen. Sign the ClickOnce manifestsist deaktiviert und deaktiviert. Ich versuche, alles lokal zu machen, daher gibt es keine Berechtigungsprobleme (ich habe versucht, diese Befehlszeile unter dem Administrator
auszuführen

1
Dort 7 Punkte mit der Aufschrift "Geben Sie das ursprüngliche Passwort in alle drei Felder ein und klicken Sie auf OK. Wenn Sie Ihr Passwort ändern möchten (oder wenn Ihr altes Passwort nicht den Komplexitätsanforderungen entspricht), können Sie dies jetzt tun." Wie ich bereits sagte, dass ich kein Passwort habe.
Dmitrij Kultasev

1
In diesem Beispiel kennt der Autor das Passwort und ich nicht
Dmitrij Kultasev
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.