"Неможливо знайти сертифікат маніфесту підпису в магазині сертифікатів" - навіть якщо додати новий ключ


153

Я не можу будувати проекти з чітким підписом назви імені - повідомлення в заголовку завжди з’являється.

Так, проект спочатку був скопійований з іншої машини. Однак навіть якщо я додаю новий ключ на вкладці "Підписання" у "Властивості проекту", ця помилка все одно відображається.

Я спробував запустити Visual Studio як адміністратор і спробував вручну додати ключі до магазину сертифікатів Windows.

Довідка!

Редагувати: Я не отримую цієї помилки з новим проектом, але я б дуже хотів, щоб цей існуючий проект працював. Це не спрацює, навіть якщо я створю новий сертифікат!


3
Який тип проекту VS? Чи знімали ви прапорець "Підписати маніфести ClickOnce" на вкладці "Підписання властивостей проекту"?
Саймон Мур’є

@Simon Mourier, якщо я зніміть цю опцію, файл не буде підписаний. Я хочу, щоб це було підписано! Це проект C #. Чудово працює на моїй головній машині розробки, тільки не на ноутбуці.
Маркус

Повідомлення про помилку відображається у вашому журналі збору чи іншим способом? Це може допомогти, якщо скопіювати та вставити журнал.
Оуен Венгерд

Помилка журналу збірки: "Неможливо знайти сертифікат маніфесту підпису в магазині сертифікатів"
Марк

Я не бачив рядків коду у прийнятій відповіді. Але це працювало для мене: я створив новий ключ у VS2015. Я не натиснув Підписати Асамблею і врятував. Потім я натиснув кнопку Вибрати з файлу, вибрав файл, який я щойно створив, ще раз натиснув на Підписати збірку та зберег. Перебудований.
Тім

Відповіді:


234

Я нарешті знайшов рішення і дуже сподіваюся, що це допоможе і комусь іншому.

  1. Відредагуйте .csprojфайл для відповідного проекту.
  2. Видаліть наступні рядки коду:

    <PropertyGroup>
       <ManifestCertificateThumbprint>...........</ManifestCertificateThumbprint>
    </PropertyGroup>
    <PropertyGroup>
       <ManifestKeyFile>xxxxxxxx.pfx</ManifestKeyFile>
    </PropertyGroup>
    <PropertyGroup>
       <GenerateManifests>true</GenerateManifests>
    </PropertyGroup>
    <PropertyGroup>
       <SignManifests>false</SignManifests>
    </PropertyGroup>
    

1
Працював і для мене. Будь-які застереження такої дії?
Доктор Кодер

1
Так, видалили що-небудь із "Маніфесту", і це спрацювало :-)
s1cart3r

2
Я б не зробив цього, не знаючи наслідків ... чи це все-таки
barnacle.m

У моєму випадку Видалення ManifestCertificateThumbprintта ManifestKeyFileвирішення проблеми.
Ахмед Шамель

Працювали для мене. Не маю поняття, які наслідки це має, але принаймні одна з них є робочим проектом, тому це досить добре для мене.
Parrotmaster

148

Перейдіть до "Властивості" вашого проекту у візуальній студії. Потім перейдіть на вкладку підписання.

Потім переконайтесь, що підпишіть маніфести клацання одного разу вимкнено


Оновлені інструкції:

У своєму Провіднику рішень:

  1. клацніть правою кнопкою миші на вашому проекті
  2. натисніть на властивості
  3. як правило, ліворуч виберіть вкладку «Підпис»
  4. перевірити знак Підписати маніфести ClickOnce
  5. Переконайтеся, що ви економите!

введіть тут опис зображення


2
Те, що ви сказали, добре і повинно працювати, але ні. Врешті-решт мені довелося видалити рядки коду, як згадується у відповіді нижче
Хамід Шахід

1
Що це робить / що означає ця дія?
LazerSharks

@TrailMix Це дозволить вам правильно змінити конфігураційний файл.
ADL

1
це дало мені рішення для vs2010 :) вгору!
jace

1
Гарна відповідь! Я використовую VS2012, і він справді працює! +1
kiLLua

15

Це просто!!

Я вирішив цю проблему, виконавши наступні кроки:

  1. Відкрити властивості проекту img
  2. Клацніть на вкладку "Підписання"
  3. І зніміть прапорець "Підписати збірку"

Це воно!!


13
  1. Відкрийте .csproj файл у Блокноті.
  2. Видаліть у магазині сертифікатів наступну інформацію, що стосується підпису сертифіката

    <PropertyGroup>
      <ManifestCertificateThumbprint>xxxxx xxxxxx</ManifestCertificateThumbprint>
      <ManifestKeyFile>xxxxxxxx.pfx</ManifestKeyFile>
    <GenerateManifests>true</GenerateManifests>
    <SignManifests>false</SignManifests>
    </PropertyGroup>
    

11

Спробуйте це: Клацніть правою кнопкою миші на вашому проекті -> Перейти до властивостями -> Натисніть підпису , який з лівого боку екрану -> Uncheck Підписати натисніть один раз маніфестів -> Save & Додавання


6

Перейдіть до своїх проектів "Властивості" у візуальній студії. Потім перейдіть на вкладку підписання.

Потім переконайтесь, що підпишіть маніфести клацання одного разу вимкнено

АБО

1. Відкрийте .csproj файл у Блокноті.

2.Виберіть таку інформацію, що стосується підпису сертифіката в магазині сертифікатів xxxxx xxxxxx xxxxxxxx.pfx true false `

Працювали для мене.


3

Якщо припустити, що це персональний сертифікат, створений Windows у системі, з якої скопійовано проект, ви можете використовувати диспетчер сертифікатів у системі, де зараз знаходиться проект, та імпортувати сертифікат. Запустіть менеджер сертифікатів (certmgr) і виберіть особисті сертифікати, потім клацніть правою кнопкою миші нижче списку існуючих сертифікатів та виберіть імпорт із завдань. Використовуйте перегляд, щоб знайти .pfx у проекті (.pfx з попередньої системи, яку ви скопіювали з проектом). Він повинен бути в підкаталозі з тим самим іменем, що і каталог проектів. Мені знайомі C # і VS, тому якщо це не ваше середовище, можливо, .pfx буде в іншому місці, а може, ця пропозиція не застосовується. Після імпорту у вас повинно з’явитися повідомлення про стан. Якщо вам це вдалося, помилка сертифіката компіляції повинна бути відсутня.certmgr екран


Чітко і стисло!
Гвідо Ліндерс

0

Ручного додавання ключів до магазину сертифікатів Windows недостатньо. Сертифікат містить лише підписаний відкритий ключ. Ви також повинні імпортувати приватний ключ, який пов’язаний із відкритим ключем у сертифікаті. Файл .pfx містить як відкритий, так і приватний ключі в одному файлі. Це те, що вам потрібно імпортувати.


Дякую, але вже спробував це. Visual Studio повинен автоматично додавати сертифікат, коли ви все одно створюєте новий. Однак я спробував додати .pfx файл також вручну. Залишив вікна, щоб встановити його у правильному магазині сертифікатів, а також додав його до мого особистого магазину.
Маркус

Приватний ключ не зберігається в магазині сертифікатів. Прочитайте, можливо, це допоможе вам зрозуміти відмінність: technet.microsoft.com/en-us/library/cc962112.aspx
Оуен Венгерд

Слід додати, що ви можете переконатися, що пов’язаний приватний ключ доступний, відкривши вікно властивостей сертифіката в менеджері сертифікатів. Якщо приватний ключ доступний, внизу сторінки Загальні відображається такий текст: "У вас є приватний ключ, який відповідає цьому сертифікату". Якщо ви не бачите цього тексту, приватний ключ не встановлений.
Оуен Венгерд

Так, це говорить "У вас є приватний ключ, який відповідає цьому сертифікату".
Маркус

Я думаю, що це виключає ключ або сертифікат як проблему.
Оуен Венгерд

0

Ви сказали, що скопіювали файли з іншого комп'ютера. Після того як ви їх скопіювали, ви "розблокували" їх? Зокрема, слід перевірити файл .snk, щоб переконатися, що він не позначений як небезпечний.


Він не заблокований, він перейшов із програмного забезпечення для синхронізації Windows Live Mesh. Однак це не має значення, оскільки навіть створення нового ключа у Visual Studio на ноутбуці не буде працювати.
Маркус

0

Щоб підписати збірку із сильною назвою, використовуючи атрибути

Відкрити AssemblyInfo.cs$(SolutionDir)\Properties)

AssemblyKeyFileAttributeабо AssemblyKeyNameAttribute, вказавши ім'я файлу або контейнер , який містить пару ключів для використання під час підписання збірки з сильним ім'ям.

додати наступний код:

[assembly:AssemblyKeyFileAttribute("keyfile.snk")]

Додавання цього рядка не має значення, я все одно отримую ту саму помилку.
Маркус

0

Якщо вам потрібно просто створити проект чи рішення на локальному рівні, тоді видалення підпису може бути мертвим простим рішенням, як це пропонують інші.

Але якщо у вас є ця помилка на сервері побудови автоматизації, як TeamCity, де ви створюєте фактичні фрагменти випуску для розгортання чи розповсюдження, ви можете розглянути, як ви можете правильно встановити цей сертифікат до магазину cert на машині збирання, щоб отримати підписані пакети в кінці збірки.

Як правило, не рекомендується здійснювати реєстрацію / введення будь-яких сертифікатів PFX у керування джерелами, тому як ви отримуєте ці файли на своєму сервері збирання під час процесу збирання - це інше питання, але іноді у людей цей файл зберігається разом із рішенням код, тому ви можете знайти його в папці проекту.

Все, що вам потрібно зробити, це просто встановити цей сертифікат під належним обліковим записом на вашому сервері збірки.

  1. Завантажте PsExec з Windows Sysinternals .

  2. Відкрийте командний рядок та введіть наступне. Він створить новий командний рядок, який працює як локальна система (якщо припустити, що ваш TeamCity працює під обліковим записом локальної системи за замовчуванням):

    > psexec.exe -i -s cmd.exe

  3. У цьому новому командному рядку перейдіть до каталогу, що містить сертифікат, і введіть ім'я файлу для встановлення (змініть ім'я файлу на ваш):

    > mykey.pfx

  4. Запуститься майстер імпорту сертифікатів. Клацніть через і виберіть усі запропоновані параметри за замовчуванням.

  5. Виконати збірку.

Всі кредити йдуть до Стюарту Noble (і потім далі Лоран Кемпа Я вважаю , ☺).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.