Сборка Team Foundation Server с защищенной паролем кодовой подписью завершается неудачно

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

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

C:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets(1805,7): error MSB4018: The "ResolveKeySource" task failed unexpectedly. System.InvalidOperationException: Showing a modal dialog box or form when the application is not running in UserInteractive mode is not a valid operation. Specify the ServiceNotification or DefaultDesktopOnly style to display a notification from a service application. at System.Windows.Forms.Form.ShowDialog(IWin32Window owner) at System.Windows.Forms.Form.ShowDialog() at Microsoft.Build.Tasks.ResolveKeySource.ResolveAssemblyKey() at Microsoft.Build.Tasks.ResolveKeySource.Execute()

Ответы на вопрос(1)

Решение Вопроса

этоСообщение блога ниже детали точные шаги

Setup Key Files

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

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

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

Open the Project Properties | Signing page Select the [X] Sign the assembly checkbox. Select the [X] Delay sign only checkbox. Select from the key file dropdown. Browse to the shared location and select the Key.snk file The snk file will be copied to each project directory that you assign it to Copy the key file from one of your projects into Solution Items so that you can use it for the test run configuration

Setup Test Run Configuration for Re-Signing

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

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

Disable Strong-Name Verification on Developer Workstations

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

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

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

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

Тип: sn -Vr *,YOUR_KEY_TOKEN

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

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

Installing the Private Key for Team Build

Поскольку закрытый ключ (Key.pfx) защищен паролем & # x2013; Team Build не может получить к нему доступ. БлагодаряБлог Nagaraju Palla: использование подписанных ключей, защищенных паролем, в Team BuildУ нас есть решение.

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

Updating TFSBuild.proj Build Script

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

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

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

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

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

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

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

 27 мая 2014 г., 18:39
Что, если вы используете Visual Studio Online (решение TFS, размещенное на Microsoft)? У вас нет доступа к сборочной машине, на которую вы можете войти.
 29 июн. 2009 г., 11:51
Что такое сообщение об ошибке?
 Sorskoot29 июн. 2009 г., 12:00
Я не получаю сообщение об ошибке. За исключением MSB4018 из моего вопроса, позволяя tfs делать здание. Я застрял после открытия проекта в Visual Studio на сервере сборки. Весь проект недоступен, потому что у меня есть только оболочка с сервисами сборки, установленными на сервере. Я думаю, что я здесь что-то наблюдаю;)
 Sorskoot29 июн. 2009 г., 10:30
Отличный ответ, спасибо! но я сталкиваюсь с некоторыми трудностями при попытке собрать проект вручную, чтобы установить ключ. У меня нет "нормального" Visual Studio установлена, только TFS Explorer и TFS сборки. Значит ли это, что мне нужно установить команду dev, чтобы собрать свой проект только один раз?
 29 июн. 2009 г., 12:09
Конечно, вам не нужно открывать проект на сервере сборки, так как ваш скрипт MSBuild будет выполнять сборку?

Ваш ответ на вопрос