Редактирование моего исходного ответа ....
Если вы хотите встроить подпись в процесс автоматической сборки, вы можете просто использовать задачу MSBuild SignFile, которая оборачивает API подписи authenticode http://msdn.microsoft.com/en-us/library/ms164304.aspx
В качестве альтернативы просто используйте вызов SignTool.exe.
Вам потребуется установить сертификат публикации программного обеспечения на машину, используя certmgr.exe или оснастку mmc для сертификатов.После установки в локальное хранилище сертификатов вы просто ссылаетесь на него, используя отпечаток SHA, который вы можете найти в свойствах сертификата, или просто перечислив сертификат в certmgr.exe.
Мы должны регулярно обновлять наши сертификаты, чтобыу нас есть дополнительные шаги в нашей сборке, чтобы повторно импортировать сертификат локально в начале сборки и извлечь хеш сертификата.Я бы не советовал хранить хэш в контроле исходного кода на тот случай, если вам придется вернуться и собрать старую версию - она должна быть частью вашей конфигурации среды, например, env var или чего-то еще, что можно отделить от вашего исходного кода.
Кроме того, не забудьте поставить метку времени для подписанных файлов, чтобы гарантировать подлинность подписи.Я бы также посоветовал вам отделить подпись от отметки времени.Метка времени - это сетевая операция, которая может иногда работать неправильно, поэтому полезно различать ошибку подписи и ошибку метки времени, поскольку ошибка метки времени является проблемой только для сборок с поддержкой Gold, которые могут быть опубликованы публично.