MSBuild не может подписать манифест ClickOnce с помощью временного ключа (ошибки MSB3326 и MSB3321)

Я пытаюсь создать проект ClickOnce Windows Forms (.NET 3.5 / Visual Studio 2010) на Компьютер Windows Server. (Чтобы автоматизировать процесс сборки с помощью HudsonCI.)

Для подписи манифеста ClickOnce я создал временный ключ в Visual Studio, temp.pfx. Я могу успешно собрать и развернуть проект из Visual Studio на своей рабочей станции. Но при запуске MSBuildна сервере я получаю следующие сообщения об ошибках:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets(1970,9): error MSB3326: Не удается импортировать следующий ключевой файл: . Ключевой файл может быть защищен паролем. Чтобы исправить это, попробуйте снова импортировать сертификат или импортируйте сертификат вручную в личное хранилище сертификатов текущего пользователя. [C:.hudson\jobs[...].csproj]

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets(1970,9): ошибка MSB3321: Импорт файла ключа "temp.pfx" был отменен. [C:.hudson\jobs[...].csproj]

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

  • Вопрос о переполнении стекаНе удается импортировать ключевой файл 'blah.pfx' - error 'Ключевой файл может быть защищен паролем'

    => В моем случае сообщение об ошибке не указывает имя хранилища сертификатов, а вместо этого говорит "личное хранилище сертификатов текущего пользователя".

    => Даже при попытке принять принятый ответ с «Личным» в качестве имени контейнера ( sn -i temp.pfx personal) не удается проанализировать ключ:

    Не удалось проанализировать PKCS Большой двоичный объект № 12 в ALiS_TemporaryKey.pfx — внутренняя ошибка o произошло.

  • Вопрос о переполнении стекаИспользование MSBuild для подписи ClickOnce или сборки приводит к ошибке MSB3321

    => Я попробовал принятый ответ, но файл ключа не может быть импортирован, потому что «Либо профиль пользователя недоступен или для импортируемого закрытого ключа может потребоваться поставщик криптографических услуг, который не установлен в вашей системе"

    => То же самое произойдет, если я попытаюсь импортировать файл, дважды щелкнув его в проводнике Windows (предложение RobinDotNet)

  • Вопрос о переполнении стекаПодписание сборок с файлами PFX в MSBuild, Team Build и TFS

    => ОП этого вопроса также не увенчался успехом с двумя приведенными выше ответами, но, к сожалению, даже не с ответами, которые он получил Мне бы это помогло:

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

    => Я вошел в систему и запустил msbuild myproject.sln, но он даже не запрашивал у меня пароль.

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

    => Учетная запись, которая запускает Hudson (точнее: Tomcat), уже является локальным администратором. Я пытался запустить MSBuild даже из командной строки «Запуск от имени администратора» и все равно получал те же сообщения об ошибках.


Обновление:Я попытался открыть решение в Visual Studio на том же сервере и собрать его. Я получаю ту же ошибку. Когда я пытаюсь повторно импортировать файл PFX на вкладке «Подписание» в свойствах проекта, он сообщает мне «неверный пароль». Если я попытаюсь импортировать тот же файл в том же решении в Visual Studio на своей рабочей станции и предоставлю тот же пароль, он будет принят.

Обновление 2:Если я возьму старый временный ключ, сгенерированный с помощью Visual Studio 2008, его можно будет успешно импортировать в хранилище сертификатов нашего сервера; любые временные ключи, которые я недавно создал с помощью Visual Studio 2010, не могут быть импортированы.

Обновление 3:Мне удалось создать новый «временный ключ» в Visual Studio на сервере и использовать его как на сервере, так и на моей рабочей станции для подписи манифеста ClickOnce. Я только не могу дать этому разумного объяснения - оба компьютера 64-битные, и я использую Visual Studio 2010 на обоих. На обоих установлена ​​платформа .NET v3.5 и v4 (4.0.30319). Моя рабочая станция — Windows 7 Professional, а сервер — Windows Server 2008R2 Standard.

10
задан Community 23 May 2017 в 11:46
поделиться