11
votes

Msbuild ne peut pas signer un manifeste ClickOnce à l'aide d'une clé temporaire (erreurs MSB3326 et MSB3321)

J'essaie de construire une clickonce Formulaires Windows Projet (.NET 3.5 / Visual Studio 2010) sur un ordinateur serveur Windows. (dans le but d'automatiser le processus de construction avec Hudson CI .)

Pour la signature du manifeste ClickOnce, j'ai créé une clé temporaire dans Visual Studio, Temp.pfx . Je peux construire et déployer avec succès le projet de Visual Studio sur mon poste de travail. Mais lors de l'exécution MSBUILD sur le serveur I Obtenir les messages d'erreur suivants:

C: \ Windows \ Microsoft.net \ Framework64 \ V4.0.30319 \ Microsoft.common.Targets (1970,9): Erreur MSB3326: Impossible d'importer le fichier de clé suivant :. Le fichier clé peut être protégé par mot de passe. Pour corriger cela, essayez d'importer à nouveau le certificat ou d'importer manuellement le certificat dans le magasin de certificats personnels de l'utilisateur actuel. [C: .Hudson \ emplois [...]. CSPROJ]

C: \ Windows \ Microsoft.net \ Framework64 \ V4.0.30319 \ Microsoft.common.Targets (1970,9): Erreur MSB3321: Importation de fichier de clé "TEMP.PFX" a été annulée. [C: .Hudson \ emplois [...]. CSPROJ]

J'ai essayé toutes les questions et réponses suivantes sans chance:


0 commentaires

4 Réponses :


8
votes

Copiez le fichier PFX sur la machine que vous effectuez les constructions. Double-cliquez dessus et installez-le dans le gestionnaire de certificats sur la machine. Assurez-vous que vous êtes connecté au compte utilisé pour effectuer les constructions.

Autres suggestions / questions: avez-vous la bonne version de .NET installée sur la machine? Avez-vous des privilèges pour écrire dans le magasin de certificats sur cette machine?

Si vous ouvrez le projet Visual Studio, accédez aux propriétés du projet et essayez de créer un nouveau certificat, cela fonctionne-t-il? Il devrait créer un fichier PFX et l'ajouter au projet. Et pouvez-vous le voir dans le magasin de certificats (Menu Démarrer / Certmgr.msc)?


9 commentaires

Cela entraîne la même chose que la deuxième approche que j'ai mentionnée :-(


Pour être honnête, je ne sais pas ce que "Hudson" est. Avez-vous la bonne version de .NET installée sur la machine? Aussi, avez-vous des privilèges pour écrire dans le magasin de certificats sur cette machine? Si vous ouvrez un projet Visual Studio et accédez aux propriétés du projet et essayez de créer un nouveau certificat, cela fonctionne-t-il? Il devrait créer un fichier PFX et l'ajouter au projet. Et pouvez-vous le voir dans le magasin CERT? (start / cermgr.msc)


J'ai reformulé la question de savoir que, de manière à rendre Hudson uniquement un détail dans une note latérale.


Quant à votre suggestion: J'ai essayé cela, et cela a fonctionné! Puis je l'ai copié à mon propre poste de travail et que je pouvais l'utiliser pour la signature. Serait simplement intéressant de savoir quelle est la différence significative - les deux sont des machines de 64 bits avec VS 2010. L'un est Windows Server ... a mis à jour ma question en conséquence.


Eh bien, c'est ce que je sais. Nous avons plusieurs projets ClickOnce signés avec un certificat de signature de code. Chaque année, lorsque le certificat expire, nos autobuilds dans TFS échouent. Nous devons nous connecter au serveur sous le compte qui effectue les autobuilds et importer le fichier PFX. Il doit être dans le magasin de certificats de l'utilisateur. Sinon, quand il fait la construction, il essaie de demander au mot de passe, ce qui ne fonctionne pas pour des raisons évidentes. Je n'ai jamais essayé de le mettre dans le magasin de la machine, mais vous pourriez essayer cela. Post retour et je vais vous fournir des instructions si vous en avez besoin.


BTW - pendant que vous parlez de «Autobuilds in TFS» - vous demandiez ce qu'est Hudson. C'est fondamentalement quelque chose de similaire. Une application de serveur qui construit automatiquement votre code lorsque vous commettez des modifications.


BTW II: Vous voudrez peut-être incorporer votre suggestion du commentaire de votre réponse pour le rendre plus visible.


Et si vous n'avez pas accès à la machine, mon cas est son service hébergé en ligne TFS. Toute façon de le signer alors?


Et si vous utilisez VisualStudioOnline? Vous ne pouvez pas vous connecter au serveur de construction car il s'agit d'une solution hébergée.



-1
votes

J'ai eu le même problème, ne pouvait importer sur la machine TFS. S'avère que je devais l'exporter sur la machine de développeur (propriétés du projet, page de signature, cliquez sur Plus de détails) Plus en détail -> Détails de l'onglet, puis il suffit d'exporter avec un mot de passe. Copiez ce fichier exporté sur TFS et utilisez le même mot de passe: fait


1 commentaires

Ces étapes sont trop vagues pour être vraiment utiles.



0
votes

J'ai trouvé que si vous créez un fichier temporaire.pfx et laissez le mot de passe vide, cela fonctionnera correctement sur la machine de construction. Je n'ai pas réalisé que vous pouviez le laisser vide et la première fois qu'il a échoué comme pour OP. Créé un deuxième temp.pfx sans mot de passe et il est construit sur le serveur de construction pour moi.


1 commentaires

Un PFX sans mot de passe n'est pas très sécuritaire cependant :-)



0
votes

J'ai totalement le même problème. Et corrigé-le en installant Windows SDK 7.1 pour .NET 4.0 sur la machine de construction. PS Au début, nous avons installé SDK 8.0a et construire allait bien, sauf pour chanter. Il semble que 7.1 met à jour certains composants du système, de sorte que PFX commence à fonctionner.


0 commentaires