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



Comments