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