it-swarm.com.ru

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

Я не могу создавать проекты со строгой подписью ключа - сообщение в заголовке всегда появляется.

Да, проект изначально был скопирован с другого компьютера. Однако даже если я добавлю новый ключ на вкладке «Подпись» в «Свойствах проекта», эта ошибка по-прежнему отображается.

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

Помогите!

Правка: я не получаю эту ошибку с новым проектом, но я бы очень хотел, чтобы этот существующий проект работал. Это не сработает, даже если я создам новый сертификат!

98
Marcus

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

  1. Отредактируйте файл .csproj для рассматриваемого проекта. 
  2. Удалите следующие строки кода:

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

Зайдите в раздел «Свойства» вашего проекта в рамках визуальной студии. Затем перейдите на вкладку подписи.

Затем убедитесь, что Подпись манифестов Click Once отключена.


Обновленные инструкции:

В вашем обозревателе решений:

  1. щелкните правой кнопкой мыши по вашему проекту
  2. нажмите на свойства
  3. обычно слева, выберите вкладку «Подписание»
  4. отметьте галочкой подпись ClickOnce
  5. Убедитесь, что вы экономите!

 enter image description here

90
ADL
  1. Откройте файл .csproj в Блокноте.
  2. Удалите следующую информацию, связанную с подписью сертификата, в хранилище сертификатов.

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

Попробуйте это: Щелкните правой кнопкой мыши по вашему проекту -> Перейдите в свойства -> Нажмите подпись в левой части экрана -> Снимите флажок the Подпишите щелчок, как только проявится -> Сохранить и построить

9
Charming ZooZoo

Зайдите в ваши проекты "Свойства" в рамках визуальной студии. Затем перейдите на вкладку подписи.

Затем убедитесь, что Подпись манифестов Click Once отключена.

ИЛИ ЖЕ 

1. Откройте файл .csproj в Блокноте.

2. Удалите следующую информацию, связанную с подписанием сертификата в хранилище сертификатов ххххх хххххх xxxxxxxx.pfx правда ложный `

Работал на меня. 

4
Ash

Это просто!!

Я решил эту проблему, выполнив следующие действия:

  1. Открыть свойства проекта  img
  2. Нажмите на вкладку подписи
  3. И снимите флажок "Подписать Ассамблею"

Это оно!!

3
Amit Kadam

Предполагая, что это личный сертификат, созданный Windows в системе, из которой вы скопировали проект, вы можете использовать диспетчер сертификатов в системе, в которой находится проект, и импортировать сертификат. Запустите диспетчер сертификатов (certmgr) и выберите личные сертификаты, затем щелкните правой кнопкой мыши под списком существующих сертификатов и выберите импорт из задач. Используйте поиск, чтобы найти файл .pfx в проекте (файл .pfx из предыдущей системы, который вы скопировали вместе с проектом). Он должен находиться в подкаталоге с тем же именем, что и каталог проекта. Я знаком с C # и VS, поэтому, если это не ваша среда, может быть .pfx будет где-то еще, или, возможно, это предложение не применимо. После импорта вы должны получить статусное сообщение. Если вам это удалось, ошибка сертификата компиляции должна исчезнуть.certmgr screen

2
dpminusa

Чтобы подписать сборку со строгим именем, используя атрибуты

Открыть AssemblyInfo.cs$(SolutionDir)\Properties)

AssemblyKeyFileAttribute или AssemblyKeyNameAttribute, указывающая имя файла или контейнера, который содержит пару ключей, используемую при подписании сборки строгим именем.

добавьте следующий код:

[Assembly:AssemblyKeyFileAttribute("keyfile.snk")]
0
QuangNHb

Вы сказали, что скопировали файлы с другого компьютера. После того, как вы их скопировали, вы их «разблокировали»? В частности, необходимо проверить файл .snk, чтобы убедиться, что он не помечен как небезопасный.

0
Owen Wengerd

Если вам нужно просто построить проект или решение локально, то удаление подписи может быть просто мертвым простым решением, как предлагают другие.

Но если у вас есть эта ошибка на вашем сервере автоматизации сборки, таком как TeamCity, где вы собираете свои фактические выпуски для развертывания или распространения, вы можете подумать, как правильно установить этот сертификат в хранилище сертификатов на компьютере сборки, чтобы вы получили подписанные пакеты в конце сборки.

Как правило, не рекомендуется регистрировать/фиксировать любые сертификаты PFX в системе контроля версий, поэтому вопрос о том, как получить эти файлы на сервере сборки во время процесса сборки, является немного другим вопросом, но иногда люди имеют это Файл хранится вместе с кодом решения, поэтому вы можете найти его в папке проекта.

Все, что вам нужно сделать, это просто установить этот сертификат под учетной записью правильное на сервере сборки.

  1. Скачать PsExec от Windows Sysinternals .

  2. Откройте командную строку и введите следующее. Будет запущена новая команда Prompt, запускаемая как Local System (при условии, что ваша TeamCity работает под учетной записью Local System по умолчанию):

    > psexec.exe -i -s cmd.exe

  3. В этой новой командной строке перейдите в каталог, содержащий сертификат, и введите имя файла для установки (измените имя файла на ваше):

    > mykey.pfx

  4. Запустится мастер импорта сертификатов. Нажмите и выберите все предложенные значения по умолчанию.

  5. Запустите сборку.

Все кредиты идут на Стюарт Ноубл (а затем далее на Laurent Kempé Я верю ☺).

0
Sevenate

Недостаточно вручную добавить ключи в хранилище сертификатов Windows. Сертификат содержит только подписанный открытый ключ. Вы также должны импортировать закрытый ключ , связанный с открытым ключом в сертификате. Файл .pfx содержит как открытый, так и закрытый ключи в одном файле. Это то, что вам нужно импортировать.

0
Owen Wengerd