"Невозможно найти сертификат подписи манифеста в хранилище сертификатов" - даже при добавлении нового ключа
Я не могу создавать проекты с подписанием ключа строгого имени - всегда появляется сообщение в заголовке.
Да проект был первоначально скопирован с другой машины. Однако, даже если я добавляю новый ключ через вкладку подписи в свойствах проекта, эта ошибка все равно отображается.
Я попытался запустить Visual Studio в качестве администратора и попытался вручную добавить ключи в хранилище сертификатов Windows.
помогите!
Edit: я не понимаю этого ошибка с новым проектом, но я бы очень хотел, чтобы этот существующий проект работал. Это не сработает, даже если я создам новый сертификат!
11 ответов
Я, наконец, нашел решение и действительно надеюсь, что это поможет кому-то еще.
- редактировать
.csproj
файл для рассматриваемого проекта. -
удалить следующие строки кода:
<PropertyGroup> <ManifestCertificateThumbprint>...........</ManifestCertificateThumbprint> </PropertyGroup> <PropertyGroup> <ManifestKeyFile>xxxxxxxx.pfx</ManifestKeyFile> </PropertyGroup> <PropertyGroup> <GenerateManifests>true</GenerateManifests> </PropertyGroup> <PropertyGroup> <SignManifests>false</SignManifests> </PropertyGroup>
перейдите к свойствам вашего проекта в visual studio. Затем перейдите на вкладку подписи.
затем убедитесь, что знак щелчка один раз манифесты выключен.
Обновленные Инструкции:
в обозревателе решений:
- правой кнопкой мыши на вашем проекте
- нажимаем на свойства
- обычно на левой стороне, выберите вкладку "подпись"
- проверьте знак ClickOnce манифесты
- убедитесь, что вы сохраните!
попробуйте это: Щелкните правой кнопкой мыши на проект -> перейти к свойства -> нажать подписи который находится в левой части экрана ->убрать на подписать клик один раз манифесты -> Сохранить И Построить
- открыть .файл csproj в блокноте.
-
удалить следующую информацию, связанную с подписанием сертификата в хранилище сертификатов
<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 будет в другом месте или, возможно, это предложение не применяется. После импорта вы должны получить сообщение о состоянии. Если вам это удалось, ошибка сертификата компиляции должна исчезнуть.
недостаточно вручную добавить ключи в хранилище сертификатов Windows. Сертификат содержит только подписанный открытый ключ. Вы также должны импортировать закрытый ключ что связано с открытым ключом в сертификате. Ля. pfx-файл содержит как открытый и закрытый ключи в одном файле. Это то, что вам нужно импортировать.
Вы сказали, что вы скопировали файлы с другого компьютера. После того, как вы скопировали их, вы "разблокировать" их? В частности .файл snk должен быть проверен, чтобы убедиться, что он не помечен как небезопасный.
чтобы подписать сборку со строгим именем, используя атрибуты
открыть AssemblyInfo.cs
(in $(SolutionDir)\Properties
)
на AssemblyKeyFileAttribute
или AssemblyKeyNameAttribute
, указав имя файла или контейнера, содержащего пару ключей для использования при подписании сборки строгим именем.
добавить следующий код:
[assembly:AssemblyKeyFileAttribute("keyfile.snk")]
Если вам нужно просто создать проект или решение локально тогда удаление подписи может быть мертвым простым решением, как предлагают другие.
но если у вас есть эта ошибка на сервере сборки автоматизации, например TeamCity, где вы создаете фактические части выпуска для развертывания или распространения, вы можете рассмотреть, как вы можете правильно установить этот сертификат в хранилище сертификатов на машине сборки, чтобы получить подписанные пакеты в конце строить.
обычно не рекомендуется регистрироваться / совершать какие-либо PFX сертификаты в систему управления версиями, так как вы получаете эти файлы на сервере сборки во время процесса сборки немного другой вопрос, но иногда у людей есть этот файл, хранящийся вместе с кодом решения, так что вы можете найти его в папке проекта.
все, что вам нужно сделать, это просто установить этот сертификат под правильный учетная запись в вашей сборке сервер.
скачать PsExec из Windows Sysinternals.
-
Откройте командную строку и введите следующие. Он породит новую командную строку, работающую как Локальная Система (предполагая, что ваш TeamCity работает под учетной записью локальной системы по умолчанию):
> psexec.exe -i -s cmd.exe
-
в этой новой командной строке перейдите в каталог, содержащий сертификат и введите имя файла для установки (измените имя файла на ваше):
> mykey.pfx
запустится мастер импорта сертификатов. Нажмите через и выберите все предложенные значения по умолчанию.
выполнить построения.
все кредиты идут в Стюарт Нобл (и далее в Лоран Kempé Я верю ☺).