Поделиться через


Задача SignFile

Подписывает указанный файл с помощью указанного сертификата. SignFile предназначен только для подписывания файлов ClickOnce. Это оболочка для средства signtool.exe и не является задачей подписывания общего назначения.

Параметры

В следующей таблице описаны параметры задачи SignFile.

Обратите внимание, что сертификаты SHA-256 разрешены только на компьютерах с .NET 4.5 и выше.

Предупреждение

Начиная с Visual Studio 2013 с обновлением 3 эта задача имеет новую подпись, которая позволяет указать целевую версию платформы для файла. Рекомендуется использовать новую подпись по возможности, так как в процессе MSBuild используются хэши SHA-256, только если целевая платформа — .NET 4.5 или более поздней версии. Если целевая платформа — .NET 4.0 или ниже, хэш SHA-256 не будет использоваться.

Параметр Описание
CertificateThumbprint Обязательный параметр String.

Указывает сертификат, используемый для подписывания. Этот сертификат должен находиться в личном хранилище текущего пользователя.
SigningTarget Обязательный параметр ITaskItem.

Указывает файлы для подписывания с помощью сертификата, типа .exe или .dll.
TimestampUrl Необязательный параметр String.

Указывает URL-адрес сервера метки времени.
TargetFrameworkVersion Версия .NET Framework, используемая для целевого объекта.

Замечания

Помимо параметров, перечисленных выше, эта задача наследует параметры из класса Task. Список этих дополнительных параметров и их описания см. в разделе базовый класс задачи.

SignFile требует установки Visual Studio или пакета SDK для Windows 8.1, чтобы найти средство signtool.exe по пути. Его нельзя использовать в сценариях CI/CD, где установлены только средства сборки.

Пример

В следующем примере задача SignFile используется для подписывания файлов, указанных в коллекции элементов FilesToSign с сертификатом, указанным свойством CertificateThumbprint.

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <ItemGroup>
        <FileToSign Include="File.exe" />
    </ItemGroup>
    <PropertyGroup>
        <Certificate>Cert.cer</Certificate>
    </PropertyGroup>
    <Target Name="Sign">
        <SignFile
            CertificateThumbprint="$(CERTIFICATE_THUMBPRINT)"
            SigningTarget="@(FileToSign)"
            TargetFrameworkVersion="v4.5" />
    </Target>
</Project>

Заметка

Отпечаток сертификата — это хэш SHA-1 сертификата. В примере предполагается, что переменная среды CERTIFICATE_THUMBPRINT, содержащая отпечаток. Дополнительные сведения см. в разделе Получение хэша SHA-1 доверенного корневого сертификата ЦС. Если вы копируете и вставляете отпечаток из сведений о сертификате, убедитесь, что вы не включаете дополнительный невидимый символ (3F), который может предотвратить SignFile от поиска сертификата.

См. также