SignFile 任务

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

参数

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

请注意,只有 .NET 4.5 及更高版本的计算机上才允许 SHA-256 证书。

警告

从 Visual Studio 2013 Update 3 开始,此任务具有一个新的签名,可用于指定文件的目标框架版本。 建议尽可能使用新签名,因为仅当目标框架为 .NET 4.5 或更高版本时,MSBuild 进程才使用 SHA-256 哈希。 如果目标框架为 .NET 4.0 或更低版本,则不会使用 SHA-256 哈希。

参数 描述
CertificateThumbprint 必需 String 参数。

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

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

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

言论

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

SignFile 需要安装 Visual Studio 或 Windows 8.1 SDK,才能在路径上查找 signtool.exe 工具。 它不能用于仅安装生成工具的 CI/CD 方案。

以下示例使用 SignFile 任务使用由 CertificateThumbprint 属性指定的证书对 FilesToSign 项集合中指定的文件进行签名。

<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 查找证书。

另请参阅