Подтвердить что ты не робот

Team Foundation Server Build с защитой паролем.

Я пытаюсь настроить сборку непрерывной интеграции на TFS 2008. В проекте, который я хочу построить, я использую ключ для подписи. Этот ключ использует пароль. Я не могу заставить его строить, потому что во время сборки TFS хочет показать диалог, который не может быть показан. Я думаю, что мне нужно создать проект вручную на сервере, но на сервере установлены только тестер и компоненты TFS. Любые предложения о том, как правильно построить мой проект?

Это ошибка, заданная TFS:

C:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets(1805,7): ошибка MSB4018: "ResolveKeySource" задача неожиданно завершилась. System.InvalidOperationException: Отображение модального диалогового окна или формы когда приложение не работает в Режим UserInteractive недействителен операция. Укажите ServiceNotification или Стиль DefaultDesktopOnly для отображения уведомление от службы выражение. в System.Windows.Forms.Form.ShowDialog(IWin32Window владелец) в System.Windows.Forms.Form.ShowDialog() в Microsoft.Build.Tasks.ResolveKeySource.ResolveAssemblyKey() в Microsoft.Build.Tasks.ResolveKeySource.Execute()

4b9b3361

Ответ 1

В этом сообщении в блоге ниже указаны точные шаги

Файлы файлов настроек

Создайте защищенную паролем частную/открытую пару ключей (KeyPair.pfx), используя вкладку "Подписывание" Visual Studio в свойствах проектов Извлеките открытый ключ из пары ключей и скопируйте его в отдельный файл (Key.snk) sn.exe -p KeyPair.pfx Key.snk

Скопируйте KeyPair.pfx на ваш сервер сборки. Я использую C:\Program Files\MSBuild\KeyFile.pfx, потому что к нему можно получить доступ с помощью свойства MSBuildExtensionsPath MSBuild. Переместите файл KeyPair.pfx в безопасное и безопасное место. Сохраните секретный пароль. Скопируйте Key.snk в общую папку, где ваши разработчики могут получить к ней доступ. Настройка проектов для подписания

Для каждой сборки, которую вы хотите подписать:

  • Откройте Свойства проекта | Подпись страницы
  • Установите флажок [X] Подписать сборку.
  • Установите флажок [X] Delay sign.
  • Выберите из раскрывающегося списка ключевых файлов.
  • Найдите общий доступ и выберите файл Key.snk
  • Файл snk будет скопирован в каждый каталог проекта, который вы назначили ему
  • Скопируйте файл ключа из одного из ваших проектов в элементы решения, чтобы вы могли использовать его для конфигурации тестового прогона

Настройка тестового запуска для повторной подписи

Если вы хотите настроить свои сборки и включить Code Coverage для своих модульных тестов, вам нужно указать файл ключа для повторной подписи.

Откройте файл LocalTestRun.testrunconfig На вкладке "Покрытие кода" выберите ключ в качестве файла ключевого слова "Повторная подпись"

Отключить проверку сильного имени на рабочих станциях разработчика

Поскольку вы подписываете задержку с использованием только открытого ключа, проверка сборки .NET CLR завершится неудачно, если сборки будут созданы локально. Когда проверка завершится неудачно, вы не сможете запускать или отлаживать сборки.

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

Откройте командную строку Visual Studio Тип: sn.exe -tp Key.snk

Это приведет к выдаче некоторых данных, включая токен.

Тип: sn -Vr *,YOUR_KEY_TOKEN

пример: sn -Vr *,0123456789abcdef

Это отключит надежную проверку имени для всех сборок, подписанных с вашим открытым ключом. Вы можете указать текущие настройки для сильной проверки имени с помощью: sn -Vl

Установка закрытого ключа для сборки команды

Так как закрытый ключ (Key.pfx) защищен паролем - Team Build не может получить к нему доступ. Благодаря Блог Nagaraju Pallas: использование защищенных паролем ключей подписи в Team Build, у нас есть решение.

Вход на сервер Team Build в качестве учетной записи службы сборки Открыть проект в Visual Studio Создайте проект в Visual Studio Вам будет предложено ввести пароль в файл закрытого ключа. Введите пароль Закрыть Visual Studio и выйти из системы Файл закрытого ключа теперь устанавливается в хранилище локальных сертификатов учетных записей службы сборки, а Team Build может получить к нему доступ, не запрашивая пароль снова. Это хранилище сертификатов столь же безопасно, как и пароль учетной записи службы сборки. (Подсказка: сделайте его таким же сильным, как ваш пароль для ключей)

Обновление TFSBuild.proj Build Script

Team Build имеет доступ к закрытому ключевому файлу и паролю. Это позволяет полностью подписывать сборки.

Чтобы переопределить параметры проекта и дать команду Team Build использовать закрытый ключевой файл и отключить частичное подписание, нам нужно установить свойство CustomPropertiesForBuild в TFSBuild.proj

Завершите сборку TFSBuild.proj script Поиск свойства placeholder (по умолчанию строка 130) Замените его следующим: SignAssembly = истина; DelaySign = ложь; AssemblyOriginatorKeyFile = $(MSBuildExtensionsPath)\Key.pfx Регистрация изменений Очередь сборки Проверка вывода сборки команды

Чтобы проверить, что Team Build правильно назвала ваши сборки, вы можете использовать утилиту sn.exe для проверки сильной сигнатуры имени.

Откройте командную строку Visual Studio Тип: sn.exe -vf assemblyname.dll

Вы также можете проверить все свои сборки одновременно:

Откройте командную строку Visual Studio Тип: FOR% a IN (*.dll) DO sn.exe -vf% a