Die Schlüsseldatei 'blah.pfx' kann nicht importiert werden - Fehler 'Die Schlüsseldatei ist möglicherweise passwortgeschützt.'

392

Wir haben gerade unsere Visual Studio 2008-Projekte auf Visual Studio 2010 aktualisiert. Alle unsere Assemblys wurden mit einem Verisign-Codesignaturzertifikat stark signiert . Seit dem Upgrade wird ständig der folgende Fehler angezeigt:

Die folgende Schlüsseldatei kann nicht importiert werden: companyname.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 mit dem folgenden Schlüsselcontainernamen auf dem Strong Name CSP: VS_KEY_3E185446540E7F7A

Dies geschieht auf einigen Entwicklercomputern und nicht auf anderen. Einige Methoden zur Behebung dieses Problems, die manchmal funktionierten, umfassen:

  • Neuinstallation der Schlüsseldatei aus dem Windows Explorer (klicken Sie mit der rechten Maustaste auf die PFX-Datei und klicken Sie auf Installieren).
  • Wenn Sie Visual Studio 2010 zum ersten Mal auf einem neuen Computer installieren, werden Sie beim ersten Öffnen des Projekts zur Eingabe des Kennworts aufgefordert. Anschließend funktioniert es. Auf Computern, die von Visual Studio 2008 aktualisiert wurden, ist diese Option nicht verfügbar.

Ich habe versucht, den Schlüssel mit dem Dienstprogramm SN.EXE (Strong Name Tool) beim Strong Name CSP zu registrieren, wie in der Fehlermeldung angegeben. Wenn ich das Tool jedoch mit Optionen ausführe, die die mit Visual Studio 2010, SN, gelieferte Version verwenden .EXE listet nur seine Befehlszeilenargumente auf, anstatt irgendetwas zu tun. Dies geschieht unabhängig davon, welche Argumente ich liefere.

Warum passiert das und was sind klare Schritte, um es zu beheben? Ich werde die ClickOnce- Installationen und die Microsoft- Codesignatur aufgeben .

JasonD
quelle

Antworten:

447

Ich bin auch auf dieses Problem gestoßen. Ich konnte das Problem durch Ausführen beheben
sn -i <KeyFile> <ContainerName>( installiert das Schlüsselpaar in einem benannten Container ).

snwird normalerweise als Teil eines Windows SDK installiert. Zum Beispiel C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\sn.exe. Höchstwahrscheinlich befindet sich dieser Speicherort nicht im Suchpfad für Ihre Standardumgebung. Die von Visual Studio installierte "Developer Command Prompt" fügt jedoch zusätzliche Informationen hinzu, die normalerweise den richtigen Speicherort enthalten.

Basierend auf Ihrem Beitrag würde das so aussehen

sn -i companyname.pfx VS_KEY_3E185446540E7F7A

Dies muss am Speicherort Ihrer PFX-Datei ausgeführt werden. Wenn Sie die Lösung in VS 2010 geladen haben, können Sie einfach im Lösungs-Explorer mit der rechten Maustaste auf die pfx-Datei klicken und die Eingabeaufforderung öffnen auswählen, um das Cmd-Eingabeaufforderungstool .net 2010 zu starten das richtige Verzeichnis.

Bevor ich diesen sn-Befehl ausführte, installierte ich den pfx neu, indem ich mit der rechten Maustaste darauf klickte und install auswählte, aber das funktionierte nicht. Nur etwas zu beachten, da es die Kombination von beiden sein könnte, die die Lösung lieferte.

Hoffe, dies hilft, Ihr Problem zu lösen.

Brandon Manchester
quelle
5
Danke Brandon - ja das, wie die manuelle Neuinstallation der Schlüsseldatei "irgendwie" das Problem löst. Das Problem ist, dass sobald Sie die Schlüsseldatei einchecken, alle anderen Benutzer, die die neuesten Informationen zu dieser eingecheckten Schlüsseldatei erhalten, diesen Fehler bemerken. Wenn einer dieser Benutzer sein "Update" eincheckt und ich die neuesten Informationen erhalte, ist mein Computer jetzt wieder defekt ... und so weiter. Microsoft hat hierfür ein Trouble Ticket gestartet und es dem VS2010-Team und dem VSS-Team zugewiesen.
JasonD
2
Interessant. Ich bin beim Hinzufügen des Pfx zum neuen CSP nicht auf dieses Problem gestoßen. Meines Wissens ändert SN -i die pfx-Datei nicht, sodass Sie danach nichts mehr einchecken müssen. Wenn Sie jedoch die pfx-Datei trotzdem ändern, z. B. das Kennwort zurücksetzen, würde dies ein Problem verursachen, da die pfx-Datei geändert würde. Wird Ihre Lösung mit dieser pfx-Datei von einem anderen Computer erstellt? Wenn ja, dann ist die pfx-Datei korrekt und nur nicht auf den richtigen CSP auf Ihrem Computer eingestellt, auf dem Build-Probleme auftreten.
Brandon Manchester
3
Zuerst habe ich nur den sn-i-Teil ausprobiert, aber es wurde beanstandet, dass das Passwort falsch war (obwohl es korrekt war). Ich habe das Zertifikat entfernt, es neu installiert und dann hat sn -i ... funktioniert. Grundsätzlich wurde bestätigt, dass für mich beide Schritte erforderlich waren. Installieren Sie cert neu und führen Sie den Befehl sn aus.
Dodgyrabbit
1
Ich habe sowohl in VSS als auch in TFS festgestellt, dass das Ausführen des Befehls sn -i nur funktioniert, wenn Sie die PFX-Datei ausgecheckt haben, und wenn Sie sie einchecken, funktioniert sie nicht für andere Entwickler im Netzwerk. Ich muss versuchen, das Zertifikat erneut zu installieren, und dann den Befehl sn -i ausführen. Wir brauchen es, um auf allen Entwicklermaschinen im Büro zu arbeiten.
JasonD
5
Das hat auch bei mir funktioniert, aber ich musste das in der Vergangenheit nie tun. VS wurde immer nur angezeigt und fragte nach dem Passwort für jeden Schlüssel. Was hat sich verändert?
Kevin Berridge
126

Ich habe einen Fix entdeckt, mit dem Sie in einer Umgebung mit mehreren Entwicklern erfolgreich erstellen können:

Anstatt das Kennwort zu ändern (wodurch die PFX-Datei geändert wird), wählen Sie die PFX-Datei erneut aus der Combobox aus. Dies ruft dann den Passwortdialog auf. Nach Eingabe des Passworts wird das Projekt OK erstellt. Jeder Entwickler kann dies auf seinem lokalen Computer tun, ohne die PFX-Datei zu ändern.

Ich habe immer noch Probleme damit, Assemblys auf unserem Build-Server-Computer zu signieren. Ich erhalte dort den gleichen Fehler, aber die Verwendung der Methode sn.exe -i behebt das Problem für den Buildserver nicht.

Magische Box
quelle
5
Ich habe eine Weile versäumt, dies auch auf unserem TFS-Build-Server zum Laufen zu bringen, und festgestellt, dass ich als ich selbst angemeldet war, nicht als Build-Service-Konto. Kein Wunder, dass es nicht gefunden werden konnte - doh!
Daniel Morritt
7
Dies sollte als Antwort markiert werden, da die aktuell markierte Antwort in einer Umgebung mit mehreren Entwicklern nicht funktioniert. Gut gemacht.
Daniel McQuiston
Wenn Sie dieselbe PFX-Datei verwenden, um mehrere Assemblys / Projekte in einer Lösung zu signieren, müssen Sie diesen Schritt nur für ein Projekt ausführen, und er gilt für alle. Funktioniert super.
Jon Comtois
1
Mein Problem war, dass der Build-Server unter einem lokalen Konto ausgeführt wurde. Ich ging in die Optionen und änderte sie, merkte aber nicht, dass ich sie an der falschen Stelle geändert hatte - was mich stundenlang zur Fehlerbehebung führte, bis ich sie erneut überprüfte und meinen Fehler erkannte!
Der Muffin-Mann
3
Genial danke. Leider ist dies auch 2017 eine Problemumgehung.
Billy Jake O'Connor
43

Ich hatte das gleiche Problem und das Löschen des Geschäfts und das Lesen funktionierten nicht. Ich musste folgendes tun.

  • Holen Sie sich eine Kopie von OpenSSL . Es ist für Windows verfügbar . Oder verwenden Sie eine Linux-Box, da sie so ziemlich alle haben.

  • Führen Sie Folgendes 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.

Gestrandet
quelle
1
Vielen Dank!! Ich denke, das hat bei mir funktioniert. Ich habe mir hier openssl
geholt
Ich möchte die Option hinzufügen, das tatsächliche Zertifikat in den pfx aufzunehmen: openssl pkcs12 -export -out zertifikat.pfx -inkey privateKey.key -in zertifikat.crt -certfile CACert.crt -keysig -keyex
Pete
Stellen Sie sicher, dass Sie openssl als Administrator ausführen. Andernfalls wird die Fehlermeldung "Zufälliger Status kann nicht geschrieben werden" angezeigt. Außerdem: Ich musste nach dem Öffnen von openssl immer noch die Antwort von Brandon Manchester mit dem Befehl "sn -i ..." ausführen Ding.
Lee Richardson
Dies ist die einzige Lösung, die mir endlich geholfen hat. Vielen Dank!
Ladislav
37

Ich habe zu früh gesprochen! Rebuild brachte die Fehler wieder ins Spiel ...

Ich fand, dass dies funktioniert - klicken Sie mit der rechten Maustaste in den Projektmappen- Explorer und schließen Sie es aus dem Projekt aus. Klicken Sie auf Alle Dateien anzeigen , klicken Sie mit der rechten Maustaste und fügen Sie sie nun wieder in das Projekt ein. Jetzt ausstehende Änderungen rückgängig machen ...

Aus irgendeinem Grund hat das für mich geklärt und war relativ schmerzlos!

Mike F.
quelle
Nimm es zurück, hat nicht geholfen. Ich habe nicht bemerkt, dass der Pfx aus den Projekteinstellungen entfernt wurde. Ich denke, die Antwort liegt in der Antwort von Stefan stackoverflow.com/a/14644793/1735721
DennisWelu
Diese Antwort ist großartig. Es hat bei mir funktioniert und ist so einfach.
Ben Rubin
Arbeitete für mich (VS2017 15.7.4). Vielen Dank für die nette und schnelle Lösung.
Meeting Attender
Arbeitete für mich am VS2019 16.1.3. Vielen Dank!!
JordanTDN
35

Ich habe festgestellt, dass Sie in einigen Fällen versuchen sollten, diesen Schlüssel zu löschen, bevor Sie ihn installieren. Gehen Sie also wie folgt vor:

  1. sn -d VS_XXXX
  2. sn -i mykey.pfx VS_XXX
Dariusz
quelle
1
Das hat es für mich behoben! Die Installation selbst schlug fehl, da das Objekt bereits vorhanden ist.
Andy
Ich habe das auch versucht und es hat nicht geholfen. Könnte etwas mit dem Zertifikat selbst nicht stimmen?
Tomáš Zato - Wiedereinsetzung Monica
2
Vielen Dank, das Entfernen muss als Administrator erfolgen. Wenn Sie als normaler Benutzer ausgeführt werden, wird der irreführende Fehler "Starker Name-Schlüsselcontainer nicht gefunden" angezeigt.
Astrowalker
Danke Seine Arbeit für mich.
Rikin Patel
31

VSCommands 2010 (Plugin für Visual Studio) kann dies automatisch für Sie beheben. Klicken Sie einfach mit der rechten Maustaste auf Fehler und klicken Sie im Menü auf Fix anwenden. Sie können es aus der Visual Studio-Galerie herunterladen .

Jarek Kardas
quelle
1
Ich glaube, dies ist für die Pro-Version - habe diese Option nicht in meiner Lite-Version
Adam Butler
2
Die Version, die ich gerade heruntergeladen habe (im September 2011), wurde mit dieser Option geliefert.
Jim zählt
4
Es ist weiterhin eine Pro-Lizenz erforderlich.
John Baughman
27

Nachdem ich all diese Lösungen (und vieles mehr) ausprobiert hatte, stellte ich fest, dass das Problem woanders liegt. Für Menschen, die nach dem Kauf eines Zertifikats das gleiche Elend wie ich haben, teile ich die Lösung für mein Problem.

Verhalten

Ich verstehe, dass 'sign' einen starken Namen und keinen Authenticode auf eine DLL oder EXE anwendet. Aus diesem Grunde Signtool wird in diesem Fall arbeiten, aber ‚Zeichen‘ in Visual Studio wird nicht funktionieren.

Grund

In der Vergangenheit habe ich Erfahrung mit Zertifikaten von Verisign. Sie haben einKeySpec=2 Zertifikat, das mit der Zeichenfunktion in Visual Studio verwendet wird. Diese Zertifikate funktionieren sowohl für Visual Studio als auch für signtool einwandfrei.

Ich habe jetzt Zertifikate von Comodo gekauft, deren Codesignaturzertifikate falsch sind KeySpec=1. Das bedeutet, dass diese Zertifikate gut mit signtool (Authenticode) funktionieren, jedoch nicht mit starken Namen (Dropdown-Liste für Zeichen).

Lösung

Es gibt zwei Möglichkeiten, um dieses Problem zu lösen:

  1. Erstellen Sie mit ein separates Zertifikat für Ihren starken Namen sn -k [name].snk. Signieren Sie die Assembly mit dem snk und verwenden Sie anschließend signtool mit Ihrem Codesignaturzertifikat, um die DLL / EXE mit der Authenticode-Signatur zu signieren. Obwohl dies seltsam erscheint, ist dies meines Wissens ein korrekter Weg, um mit Zertifikaten umzugehen, da starke Namen einen anderen Zweck haben als Authenticode (siehe auch diesen Link für Details dazu, wie dies funktioniert).
  2. Importieren Sie Ihr Zertifikat als KeySpec=2. Die Vorgehensweise hierzu finden Sie hier .

Da ich mehrere starke Namen verwenden möchte, verwende ich derzeit Option (1), obwohl Option (2) auch funktioniert.


Um sicherzustellen, dass diese Lösung in Zukunft niemals verloren geht, gehen Sie wie folgt vor: Lösung 2:

  1. Exportieren Sie mit der MMC "Certifiates" das vorhandene Keyset ( KeySpec=1) in eine PFX-Datei. Hinweis: Bitte sichern Sie diese Datei an einem sicheren Ort und testen Sie, ob die Datei auf einem anderen Computer einwandfrei importiert werden kann, wenn Sie wirklich auf Nummer sicher gehen möchten!
  2. Löschen Sie das vorhandene Zertifikat aus dem Kryptospeicher (stlll mit der MMC).
  3. Öffnen Sie eine CMD-Eingabeaufforderung.
  4. Importieren Sie die PFX-Datei mit diesem Befehl:
    1. certutil -importPFX -user <pfxfilename> AT_SIGNATURE
    2. Geben Sie die Passphrase für den Pfx ein, wenn Sie dazu aufgefordert werden.

Sie sollten jetzt ein Keyset / Zertifikat mit haben KeySpec=2. Bei Bedarf können Sie diese nun mit der MMC erneut in eine andere PFX-Datei exportieren.

atlaste
quelle
Ihre Lösung Nr. 2 war das einzige, was für mich funktioniert hat (ohne Verwendung eines sekundären Befehlszeilentools oder -prozesses). Danke.
Bron Davies
1
Ja, ich verstehe wirklich nicht, warum einige Lösungen hier so viele Stimmen haben. Dies ist wirklich das einzige, was für mich funktioniert hat, und ich bin mir ziemlich sicher, dass die meisten Leute, die ein CS-Zertifikat kaufen, das gleiche Problem haben sollten. Naja...
ja
1
Dies ist die einzige Lösung, die für mich funktioniert hat. Außerdem kann die PFX-Datei keine Informationen zur Zertifikatverkettung zum Signieren von Assemblys enthalten.
Shih-Wen Su
Vielen Dank für eine so detaillierte Anleitung. Jeder Schritt wird genau beschrieben.
Dmitriy
1
Ihre erste Lösung ist hier von entscheidender Bedeutung: Es ist absolut nicht erforderlich , Baugruppen mit einem teuren passwortgeschützten Zertifikat stark zu signieren! Sobald Sie dies verstanden haben und einfach eine snk-Datei verwenden, ist dieses Problem vollständig behoben. Siehe den Warnhinweis hier und hier .
Paul
11

Um dieses Problem in Visual Studio 2012 zu beheben, klicke ich mit der rechten Maustaste auf das Projekt, Eigenschaften -> "Signieren" und deaktiviere dann das Kontrollkästchen "ClickOnce-Manifeste signieren".

Romeo
quelle
2
Dies ist eine perfekte Antwort, wenn die Unterzeichnung nicht erforderlich ist. Dadurch muss das Projekt nicht mehr signiert werden.
Tom Anderson
8

Ich habe die Pfx-Datei (Key) im Dropdown-Feld "Schlüsseldatei mit starkem Namen auswählen" erneut ausgewählt und dann im Popup-Fenster "PASSWORT EINGEBEN" das Kennwort angegeben. Ich habe mein Projekt gespeichert und habe es erneut erstellt.

  • Öffnen Sie die Projekteigenschaften.
  • Klicken Sie auf den Abschnitt Signieren.
  • Wählen Sie dort, wo "Wählen Sie eine Schlüsseldatei mit starkem Namen:" aus, den aktuellen Wert aus dem Dropdown-Feld erneut aus:

Geben Sie hier die Bildbeschreibung ein

  • Visual Studio fordert Sie nun zur Eingabe des Kennworts auf. Geben Sie es ein.

Geben Sie hier die Bildbeschreibung ein

  • Speichern Sie Ihr Projekt und führen Sie eine Neuerstellung durch.

  • Wenn Sie eine Fehlermeldung erhalten: "Es wurde versucht, auf ein nicht vorhandenes Token zu verweisen", ignorieren Sie es einfach und fahren Sie mit den folgenden Schritten fort

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

Geben Sie hier die Bildbeschreibung ein

  • 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.

  • Speichern Sie Ihr Projekt und führen Sie eine Neuerstellung durch.

Mehr Info..

Bala Kumar
quelle
3
Dieser ganze Fehler scheint völlig zufällig zu lösen, aber diese Lösung hat bei mir funktioniert. Wenn jemand so weit unten auf der Seite ist, kann ich nur vorschlagen, alles auszuprobieren.
DeusExMachina25
6

Um dieses Problem zu umgehen, habe ich versucht, Visual Studio 2010 als Administrator auszuführen, und es hat bei mir funktioniert.

Ich hoffe das hilft.

user350076
quelle
Es hat aus irgendeinem Grund aufgehört zu funktionieren. Ich konnte nicht glauben, dass dies das Problem tatsächlich löste. Vielen Dank!!!
Gerhard Powell
4

Als ursprünglicher Autor der Umgehung des Connect-Fehlerberichts gibt es ZWEI Varianten dieser Nachricht (die ich später entdeckt habe).

Für eine Variante verwenden Sie sn.exe (normalerweise, wenn Sie starke Namen verwenden), um den Schlüssel in den Speicher für starke Namen zu importieren.

Die andere Variante, für die Sie certmgr zum Importieren verwenden, ist das Codesignieren für Dinge wie die einmalige Bereitstellung (beachten Sie, dass Sie dasselbe Zertifikat für beide Zwecke verwenden können).

Hoffe das hilft.

PeterI
quelle
Ja, wir haben es auch mit Microsoft-Unterstützung versucht, und auf diese Weise wird der Import der Codesignatur durchgeführt. Das Problem scheint wirklich zu sein, dass das Zertifikatkennwort während des Eincheckvorgangs verloren geht. Dies scheint jedoch nicht das eigentliche Problem zu sein. Wenn Sie die Zertifikatdetails auf Widnows 7-Computer Nr. 1 eingeben und dann genau dieselbe Datei auf einen anderen Computer verschieben und registrieren, funktioniert die Registrierung, der Build schlägt jedoch fehl. Microsoft prüft das noch für uns. Vorerst mussten wir die Codesignatur deaktivieren und während der Veröffentlichung manuell signieren.
JasonD
3

Bei mir hat nichts funktioniert, aber dann habe ich mir den Zertifikatsmanager (mmc.exe) angesehen. Das Zertifikat wurde nicht in den persönlichen Speicher importiert, daher habe ich es manuell importiert und dann das Projekt kompiliert.

Siehe Signieren von ClickOnce-Manifesten und Signaturen mit starken Namen mithilfe der Signaturseite von Visual Studio Project Designer, Signieren von Baugruppen .

Samuel
quelle
Dies löste das Problem auch für mich, nachdem ich das SN.exe -i-Update durchgeführt hatte.
CodingSamurai
2

Das erneute Auswählen der Schlüsseldatei in einer Combobox und das Eingeben eines Passworts hilft uns dabei.

Dies ist jedoch jedes Mal erforderlich, wenn sich die Schlüsseldatei ändert, und es scheint nicht in Ordnung zu sein.

user1113289
quelle
2

Ich hatte das gleiche Problem, nachdem ich meine Windows-Installation auf eine SSD verschoben hatte . Keine der anderen Lösungen hat bei mir funktioniert.

Meine Lösung bestand darin, die Projektdatei im Editor zu öffnen und alle Verweise auf PFX-Schlüssel zu entfernen. Öffnen Sie nach dem Speichern der Datei die Lösung in Visual Studio. Gehen Sie zu Projekt -> Eigenschaften -> Signieren. Im Kombinationsfeld "Wählen Sie die Schlüsseldatei mit dem starken Namen aus" sollten keine Schlüssel angezeigt werden. Navigieren Sie im Kombinationsfeld zum Schlüssel, wählen Sie ihn aus, und Ihr Projekt kann jetzt erstellt werden.

GoalMaker
quelle
2

Mein Problem war, dass der TFS Build Controller als Netzwerkdienst ausgeführt wurde und ich aus irgendeinem Grund nicht verstand, warum die Visual Studio Build Host-Dienstzertifikate nicht verwendet wurden. Ich habe die Identität des Visual Studio Build-Dienstes in einen verwaltbareren geändert, sichergestellt, dass er über Rechte auf dem TFS-Server verfügt, und die Zertifikate mithilfe der MMC manuell hinzugefügt.

Das Problem war auch, dass MSBuild die passwortgeschützten Zertifikate nicht zum Store hinzufügen kann.

Wächter
quelle
Zu welchem ​​Geschäft müssen Sie es hinzufügen?
Felickz
Ich habe das Gleiche getan (und auch Zertifikate in das Personal / Trusted Root / Trusted Pub dieses Benutzers gestellt. Ich bin mir nicht sicher, welches Problem behoben wurde) und konnte mit dem nächsten TFS-Fehler fortfahren, bei dem ich widersprüchliche Arbeitsbereiche hatte, um dies zu korrigieren um einen neuen Build-Agenten zu entfernen und hinzuzufügen.
Felickz
2

Ich hatte ein ähnliches Problem, aber nachdem ich den Pfx in einer ComboBox "Key Name Key File" ausgewählt und das Passwort eingegeben hatte, bekam ich immer noch einen ähnlichen Fehler (ohne den Containernamen-Teil):

Die folgende Schlüsseldatei kann nicht importiert werden: companyname.pfx. Die Schlüsseldatei ist möglicherweise passwortgeschützt. Versuchen Sie, das Zertifikat erneut zu importieren oder das Zertifikat manuell zu installieren, um dies zu korrigieren

Außerdem wurde das Zertifikatinformationsfenster "ClickOnce-Manifeste signieren" nicht ausgefüllt.

Ich habe "Aus Datei auswählen ..." auf meinem pfx ausgeführt und das Problem wurde behoben.

surfen
quelle
1

Alle hier beschriebenen Methoden haben mir nicht geholfen. Aber als ich die * .pfx-Datei aus meinem Projekt löschte und sie erneut zur Signatur der Assembly hinzufügte, erstellte ich mein Projekt ohne Fehler! Ich kann die Gründe nicht erklären. Aber es hat bei mir funktioniert.

Peter Barbanyaga
quelle
1

Okay, das hat bei mir funktioniert. Öffnen Sie die alte Lösung / das alte Projekt als Administrator in Visual Studio 2010 und öffnen Sie die neue oder kopierte Lösung / das kopierte Projekt. Entfernen Sie als Administrator die kopierte pfk-Datei in der neuen Visual Studio 2010-Lösung / im neuen Visual Studio 2010-Projekt, gehen Sie zu den Projekteigenschaften und deaktivieren Sie sie.

Wenn beide Projekte geöffnet sind, kopieren Sie sie und fügen Sie sie in das neue ein. Gehen Sie zu den Projekteigenschaften und wählen Sie Erstellen. Ich habe Visual Studio geöffnet und geschlossen und es auch nach dem Entfernen aus dem neuen Projekt erstellt, bevor ich es aus dem alten Projekt kopiert und ausgewählt habe. Ich habe den Fehler zu Beginn dieses Beitrags zuerst erhalten, als ich das Projekt kopiert und versucht habe, es zu erstellen.

Jason Robertson
quelle
1

In meinem Szenario verwendete der Build-Service nicht dasselbe Benutzerkonto, mit dem ich den Schlüssel importiert habe sn.exe .

Nachdem Sie das Konto in mein Administratorkonto geändert haben, funktioniert alles einwandfrei.

Mathias Lykkegaard Lorenzen
quelle
Ich hatte das gleiche Problem. Als ich Ihren Kommentar las, wies ich darauf hin, dass ich von Windows 7 auf Windows 10 aktualisiert hatte und VS nun als Administrator ausgeführt werden musste. Also lief der VS als Admin und keine Probleme
.. Danke
1

Dies löste mein Problem: Öffnen Sie Ihr VS-Projekt

Doppelklicken Sie auf Package.appxmanifest

Gehen Sie zur Registerkarte Verpackung

Klicken Sie auf Zertifikat auswählen

Klicken Sie auf Zertifikat konfigurieren

Wählen Sie aus der Datei und verwenden Sie example.pfx, um die Einheit oder etwas anderes zu erstellen

Milad Xandi
quelle
0

Ich habe dieses Problem für mich selbst gelöst, indem ich die folgende Zeile in der .csproj-Datei des Visual Studio-Projekts geändert habe:

Dies warf den Fehler "kann nicht importieren":

<PropertyGroup>
<SignManifests>true</SignManifests>
</PropertyGroup>

Durch Ändern des Werts in false wurde der Fehler behoben.

Kyle Julé
quelle
7
Normalerweise werden Assemblys zu diesem Zweck signiert, und das Entfernen von SignManifests würde in einigen Umgebungen zu Problemen bei der Bereitstellung führen. Es ist also keine Lösung für ein Problem
Georgy Smirnov
0

Ich habe den gleichen Fehler bekommen. In meinem Fall habe ich alle oben genannten Versuche unternommen, aber ich konnte das Ergebnis nicht erzielen.

Endlich wurde mir klar, dass in meinem Fall der Grund für den Fehler darin bestand, dass das Zertifikatkennwort nicht oder falsch eingegeben wurde. Der Fehler verschwand, als ich das Passwort dynamisch korrekt eingegeben habe. erfolgreich

Hamit YILDIRIM
quelle
0

Leider hat bei mir kein hier genannter Ansatz funktioniert. Ich muss ein paar PFX in einem Docker-Container registrieren und das Passwort über die Kommandozeile übergeben.

Deshalb habe ich den sn.exe -i <infile> <container>Befehl in C # mithilfe des RSACryptoServiceProvider neu entwickelt . Die Quelle und die App befinden sich auf GitHub im SnInstallPfx- Projekt.

Das SnInstallPfx App akzeptiert einen PFX-Schlüssel und sein Passwort. Es berechnet den Schlüsselcontainernamen (VS_KEY_ *) automatisch (aus dem MSBuild-Quellcode entlehnt) und installiert ihn unter dem starken Namen CSP.

Verwendungszweck:

SnInstallPfx.exe <pfx_infile> <pfx_password>
// or pass a container name if the default is not what you need (e.g. C++)
SnInstallPfx.exe <pfx_infile> <pfx_password> <container_name>
Honzajscz
quelle
0

Für wen verwendet GitLab-Läufer:

  • Stellen Sie sicher, dass Sie den Runner mit einem Konto ausführen , bei dem Sie sich anmelden können: ./gitlab-runner.exe install --user ".\ENTER-YOUR-USERNAME" --password "ENTER-YOUR-PASSWORD"(Ich musste zuerst anhalten und deinstallieren.)
  • Befolgen Sie diese Anleitung , um dem Build- Benutzer die Berechtigung zum Anmelden als Dienst zu erteilen
  • Melden Sie sich mit einem solchen Build- Benutzer an
  • Verwenden Sie den in anderen Antworten vorgeschlagenen Befehl: sn -i certificate.pfx VS_KEY_C***6

Der Containername wird in der fehlgeschlagenen Jobausgabe auf GitLab vorgeschlagen (msbuild-Ausgabe). Geben Sie hier die Bildbeschreibung ein

Michele mpp Marostica
quelle