Подписание сборок с помощью файлов PFX в MSBuild, Team Build и TFS

Я получаю эту ошибку при попытке создать проект с помощью Team Build (MSBuild) на TFS 2010:


C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets (1970):
Невозможно импортировать следующий файл ключей: CCC.pfx.
Ключевой файл может быть защищен паролем.

Чтобы исправить это, попробуйте снова импортировать сертификат или вручную установить сертификат в CSP строгого имени со следующим именем контейнера ключей: VS_KEY_C00C673BBB353901

C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets (1970):
Импорт ключевого файла «CCC.pfx» был отменен.


Все идет нормально в Visual Studio 2010. Сборка подписана с помощью PFX файл. Обычно в Visual Studio нам предлагается ввести пароль при первой сборке, но больше никогда ...

Я пробовал запустить:

sn -i companyname.pfx VS_KEY_3E185446540E7F7A 

в качестве других ответов, предложенных в вопросе о переполнении стека Невозможно импортировать ключевой файл 'blah.pfx' - ошибка 'Ключевой файл может быть защищен паролем' < / а>. Я пробовал импортировать в личное хранилище сертификатов, как предложено в вопросе о переполнении стека Использование MSBuild для подписи ClickOnce или сборки приводит к ошибке MSB3321 . Но все без толку, все та же ошибка.

Как это сделать? Мне нужно как-то добавить сертификат в учетную запись Windows, под которой работает служба сборки, или что-то в этом роде?

В качестве альтернативы, как мне сделать так, чтобы сборка, выполненная в Team Build, не использовала подписи? Я просто хочу проверить, компилируется и запустить модульные тесты. Для этого мне не нужна подпись.


person MikeG    schedule 26.10.2010    source источник


Ответы (6)


Вам необходимо адаптировать этот ответ к вашему конкретному. Что-то типа:

sn -i companyname.pfx VS_KEY_C00C673BBB353901
person heavyd    schedule 26.10.2010
comment
Как вы можете видеть из моего исходного сообщения, я уже пробовал это безуспешно. - person MikeG; 28.10.2010

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

person gregmac    schedule 27.10.2010
comment
FWIW, ~ 2 года спустя, все еще использует тот же образ сервера сборки и с тех пор даже не думал об этом. - person gregmac; 22.10.2012
comment
Не могли бы вы описать, как вы запускали msbuild? Я получил команду из журнала сборки TFS, удалил переключатель / noconsolelogger и запустил ее в консоли. Когда я запускал его, мне никогда не предлагали пароль, и он просто терпит неудачу с тем же сообщением об ошибке. - person Joel McBeth; 19.07.2013
comment
@gregmac У меня такой же вопрос. Как заставить msbuild запрашивать пароль? - person jnm2; 05.11.2015

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

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

person MikeG    schedule 28.10.2010
comment
Спасибо за ваш ответ! У меня тоже сработало! - person Evren Kuzucuoglu; 07.01.2011
comment
Это также устранило мою проблему с TeamCity. Я просто изменил пользователя для входа в службу агента сборки. Я хотел бы знать, как установить эти сертификаты, чтобы они были доступны для учетной записи локальной системы ..? - person Keith; 19.02.2012

Я получал ту же ошибку, и после прочтения вашего комментария «администратора» я просто запустил командную строку VS от имени администратора, и теперь она работает нормально.

person Zar Shardan    schedule 23.03.2012

Я столкнулся с подобной проблемой

Сценарий 1. При создании проекта в локальной системе

В моем случае я получал ошибку подписи манифеста после того, как загрузил проект из TFS и построил его.

Чтобы избежать этой проблемы, я щелкнул правой кнопкой мыши проект ==> Свойства ==> Подписание, затем снял флажок «Подписать манифесты ClickOnce».

OR

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

OR

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

Сценарий 2: - явная ошибка во время сборки

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

person Sunny    schedule 31.07.2015

У меня были следующие настройки:

<PropertyGroup>
  <SignAssembly>false</SignAssembly>
  <AssemblyOriginatorKeyFile>MyKey.pfx</AssemblyOriginatorKeyFile>
</PropertyGroup>

Подписание сборки было отключено, но AssemblyOriginatorKeyFile вызвала ошибку при подписании манифеста. Удалено AssemblyOriginatorKeyFile, чтобы исправить.

person Der_Meister    schedule 08.05.2018