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

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

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

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

помогите!

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

11 ответов


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

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

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

перейдите к свойствам вашего проекта в visual studio. Затем перейдите на вкладку подписи.

затем убедитесь, что знак щелчка один раз манифесты выключен.


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

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

  1. правой кнопкой мыши на вашем проекте
  2. нажимаем на свойства
  3. обычно на левой стороне, выберите вкладку "подпись"
  4. проверьте знак ClickOnce манифесты
  5. убедитесь, что вы сохраните!

enter image description here


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


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

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

перейдите к своим проектам "свойства" в visual studio. Затем перейдите на вкладку подписи.

затем убедитесь, что знак щелчка один раз манифесты выключен.

или

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

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

работал для меня.


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


Это просто!!

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

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

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


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


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

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

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

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

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

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

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

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

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

  1. скачать PsExec из Windows Sysinternals.

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

    > psexec.exe -i -s cmd.exe

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

    > mykey.pfx

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

  5. выполнить построения.

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