2

我需要为 Windows Phone 8.1 签署 LOB/企业应用程序(构建为 APPX)以进行内部分发。我尝试使用 MSBuild SignFile 任务:

<Target Name="SignAppxPhone" AfterTargets="_CreateAppxPackage">
    <SignFile
        CertificateThumbprint="$(CertificateThumbprint)"
        SigningTarget="$(AppxPackageOutput)"
        TargetFrameworkVersion="v4.5" />
</Target>

我收到以下错误:

error MSB3482: An error occurred while signing: Data at the root level is invalid. Line 1, position 1.

怎么了?

4

1 回答 1

1

不幸的是,MSBuild SignFile 任务仅支持 PE 文件(*.exe、*.dll)和 XML。不支持 APPX 文件或 CAB 文件。我在 Reflector 中查看了 Microsoft.Build.Tasks.v12.0.dll 的最新版本——随 Visual Studio 2013 Update 3 RC 一起提供,构建于 2014 年 6 月 25 日。6 年前已向 Microsoft 报告过。

https://connect.microsoft.com/VisualStudio/feedback/details/347731/msbuild-signfile-task-fails-with-cab-files

一个合理的解决方法是<Exec>直接signtool.exe:

<Target Name="SignAppxPhone" AfterTargets="_CreateAppxPackage">
    <Exec Command="&quot;$(SignAppxPackageExeFullPath)&quot; sign /fd SHA256 /sha1 $(CertificateThumbprint) /t http://timestamp.verisign.com/scripts/timstamp.dll &quot;$(AppxPackageOutput)&quot;" />
</Target>
于 2014-07-23T19:41:15.197 回答