SignFile 任务

使用指定证书签署指定文件。 SignFile 仅用于对 ClickOnce 文件进行签名。 它是 signtool.exe 工具的包装器,并不是常规用途签名任务。

参数

下表描述了 SignFile 任务的参数。

请注意:仅允许在具有 .NET 4.5 和更高版本的计算机上使用 SHA-256 证书。

警告

自 Visual Studio 2013 Update 3 起,此任务有一个新的签名,使你可以指定文件的目标框架版本。 建议尽可能地使用此新签名,因为 MSBuild 过程只在目标框架为 .NET 4.5 或更高版本时使用 SHA-256 哈希。 如果目标框架是 .NET 4.0 或更低版本,将不使用 SHA-256 哈希。

参数 说明
CertificateThumbprint 必选 String 参数。

指定用于签名的证书。 此证书必须在当前用户的个人存储区中。
SigningTarget 必选 ITaskItem 参数。

指定要与证书一起签名的文件,类型为 .exe 或 .dll。
TimestampUrl 可选 String 参数。

指定时间戳服务器的 URL。
TargetFrameworkVersion 用于目标的 .NET Framework 版本。

备注

除上面列出的参数外,此任务还从 Task 类继承参数。 有关这些其他参数的列表及其说明,请参阅任务基类

SignFile 需要安装 Visual Studio 或 Windows 8.1 SDK 才能在路径上查找 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 包含指纹。 有关详细信息,请参阅获取受信任的根 CA 证书的 SHA-1 哈希。 如果复制并粘贴来自证书详细信息的缩略图,请确保不包含额外的 (3F) 不可见字符,它可能会阻止 SignFile 查找证书。

请参阅