VisualStudio.com无法在构建期间加载临时UWP证书

问题描述 投票:11回答:6

我设置我的Visual Studio Team Service帐户来克隆我的私有GitHub仓库,并在我对构建进行排队时构建Windows UWP应用程序。克隆工作没有任何问题;除了一个项目之外,每个项目的编译(6)都有效。 Windows UWP应用程序项目。

构建服务器编译应用程序时,我收到以下警告:

C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ AppxPackage \ Microsoft.AppXPackage.Targets(1778,5):警告APPX0104:找不到证书文件'myapp_TemporaryKey.pfx'。

2> C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ AppxPackage \ Microsoft.AppXPackage.Targets(1778,5):警告APPX0104:找不到证书文件'myapp_TemporaryKey.pfx'。 [C:\一个\ 1 \ S \源\应用\ myapp.WindowsUWP \ myapp.csproj]

C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ AppxPackage \ Microsoft.AppXPackage.Targets(1778,5):警告APPX0102:项目中指定的指纹'58F2EA544193F6FC9F2737135570555B388E58D8'的证书不能在证书商店找到。请在项目文件中指定有效的指纹。

2> C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ AppxPackage \ Microsoft.AppXPackage.Targets(1778,5):警告APPX0102:项目中指定的带有指纹'58F2EA544193F6FC9F2737135570555B388E58D8'的证书在证书商店中找不到。请在项目文件中指定有效的指纹。 [C:\一个\ 1 \ S \源\应用\ myapp.WindowsUWP \ myapp.csproj]

C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ AppxPackage \ Microsoft.AppXPackage.Targets(1778,5):警告APPX0107:指定的证书对签名无效。有关有效证书的更多信息,请参阅http://go.microsoft.com/fwlink/?LinkID=241478。 2> C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ AppxPackage \ Microsoft.AppXPackage.Targets(1778,5):警告APPX0107:指定的证书对签名无效。有关有效证书的更多信息,请参阅http://go.microsoft.com/fwlink/?LinkID=241478。 [C:\一个\ 1 \ S \源\应用\ myapp.WindowsUWP \ myapp.csproj]

这是6个编译中的最后一个项目。收到警告后,它会将所有输出文件复制到最终/ bin目录。然后,当它完成后,报告与上面相同的消息,但这次是错误并且无法构建。

_GenerateAppxPackageFile:C:\ Program Files(x86)\ Windows Kits \ 10 \ bin \ x64 \ MakeAppx.exe pack / l / h sha256 / f obj \ x86 \ Debug \ package.map.txt / o / p C:\ a \ 1 \ S \来源\应用程序\ MyApp.WindowsUWP \ AppPackages \ MyApp_1.0.0.0_x86_Debug_Test \ MyApp_1.0.0.0_x86_Debug.appx MyApp - > C:\ a \ 1 \ s \ Source \ Applications \ MyApp.WindowsUWP \ AppPackages \ MyApp_1.0.0.0_x86_Debug_Test \ MyApp_1.0.0.0_x86_Debug.appx C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ AppxPackage \ Microsoft.AppXPackage.Targets(2382,5):错误APPX0104:找不到证书文件“MyApp_TemporaryKey.pfx”。 2> C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ AppxPackage \ Microsoft.AppXPackage.Targets(2382,5):错误APPX0104:找不到证书文件“MyApp_TemporaryKey.pfx”。 [C:\ a \ 1 \ s \ Source \ Applications \ MyApp.WindowsUWP \ MyApp.csproj] C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ AppxPackage \ Microsoft.AppXPackage.Targets(2382 ,5):错误APPX0102:在证书库中找不到项目中指定的指纹“58F2EA544193F6FC9F2737135570555B388E58D8”的证书。请在项目文件中指定有效的指纹。 2> C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ AppxPackage \ Microsoft.AppXPackage.Targets(2382,5):错误APPX0102:项目中指定的带有指纹'58F2EA544193F6FC9F2737135570555B388E58D8'的证书在证书商店中找不到。请在项目文件中指定有效的指纹。 [C:\ a \ 1 \ s \ Source \ Applications \ MyApp.WindowsUWP \ MyApp.csproj] C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ AppxPackage \ Microsoft.AppXPackage.Targets(2382 ,5):错误APPX0107:指定的证书对签名无效。有关有效证书的更多信息,请参阅http://go.microsoft.com/fwlink/?LinkID=241478。 2> C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ AppxPackage \ Microsoft.AppXPackage.Targets(2382,5):错误APPX0107:指定的证书对签名无效。有关有效证书的更多信息,请参阅http://go.microsoft.com/fwlink/?LinkID=241478。 [C:\ a \ 1 \ s \ Source \ Applications \ MyApp.WindowsUWP \ MyApp.csproj] 2>完成构建项目“C:\ a \ 1 \ s \ Source \ Applications \ MyApp.WindowsUWP \ MyApp.csproj”(默认目标) - 失败。 1>完成构建项目“C:\ a \ 1 \ s \ Source \ MyApp.UWP.sln”(默认目标) - 失败。建立失败。 “C:\ a \ 1 \ s \ Source \ MyApp.UWP.sln”(默认目标)(1) - >

如果我只是删除证书(就像我在这个特定的错误日志中所做的那样),它就会失败,因为它无法找到它。如果我使用VS中的清单编辑器生成证书,并为其分配密码,则构建服务器会因为不知道密码而失败。所以我无法建立我是否提供临时测试证书。

我们如何通过Visual Studio Team Services构建系统运行Windows 10 UWP应用程序?这是微软一直在推广的东西,所以我认为这是可以做到的事情。我似乎无法让UWP项目真正构建。

msbuild visual-studio-2015 win-universal-app azure-devops build-server
6个回答
9
投票

您可以生成未分配密码的证书。

或者在构建定义中添加PowerShell步骤以导入受密码保护的证书。以下是您可以使用的powershell脚本:

$pfxpath = 'myapp_TemporaryKey.pfx'
$password = 'yourpassword'

Add-Type -AssemblyName System.Security
$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
$cert.Import($pfxpath, $password, [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]"PersistKeySet")
$store = new-object system.security.cryptography.X509Certificates.X509Store -argumentlist "MY", CurrentUser
$store.Open([System.Security.Cryptography.X509Certificates.OpenFlags]"ReadWrite")
$store.Add($cert)
$store.Close()

请记住将“工作文件夹”设置为放置pfx文件的路径。


3
投票

默认情况下,.gitignore会忽略任何*.pfx文件。因此它不会添加到git中。我有同样的问题,构建机器没有*_StoreKey.pfx文件,因此构建没有成功。

对我来说,解决方案是在构建服务器上安装*_StoreKey.pfx。然后在构建服务器上构建解决方案成功。


1
投票

我这几天遇到的同样的问题,我终于在this post的帮助下成功解决了。

实际上我们必须确保我们已经创建了一个测试用的.pfx作为UWP的开发人员,并且跟着的话分享了一些我认为有用的解决方案:

  • 使用VS创建测试证书: 在Visual Studio中,从Solution Explorer中打开Package.appxmanifestApp Manifest Designer中,选择Packaging选项卡,然后选择Choose Certificate按钮。 在“选择Certificate”对话框中,展开“配置证书”列表,然后选择Create test certificate。 在Create test certificate对话框中,输入您的信息并单击“确定”按钮。(上面的步骤说明来自此
  • 使用MakeCertPvk2PfxCertutil工具创建证书 MDSN : How to create an app package signing certificate

希望它可以帮助你!


1
投票

我用“安全文件”功能解决了这个问题:https://docs.microsoft.com/en-us/azure/devops/pipelines/library/secure-files?view=vsts

  1. 在构建管道中,有一个“库”选项卡。我在那里添加了pfx(从源代码管理中排除)作为文件。
  2. 然后我添加了“下载安全文件”作为构建任务(https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/download-secure-file?view=vsts)。请注意文档中的环境变量(目前为$ env:DOWNLOADSECUREFILE_SECUREFILEPATH)
  3. 然后,我添加了一个命令行任务,将文件移动到预期的位置。所以命令是move %DOWNLOADSECUREFILE_SECUREFILEPATH% FolderOfMyProject

现在它的行为就像证书已签入一样。


1
投票

我也得到了错误:

“无法导入密钥文件'blah.pfx'。密钥文件可能受密码保护。要解决此问题,请尝试将证书手动导入当前用户的个人证书存储区”。

您可以双击.pfx文件将其导入您的商店,诀窍是当它启动向导时,您必须在第一个屏幕上选择“当前用户”而不是“本地机器”,而不是“自动“,我特意选择了”个人“。

之后我能够构建包。当我选择“Local Machine”+ Personal时没用。


0
投票

有同样的问题(qazxsw poi)并尝试了所有解决方案,但没有任何对我有用。事实上,他们是在qazxsw poi中的关键名称之后的新行:

error APPX0107: The certificate specified is not valid for signing

删除它,它工作。

© www.soinside.com 2019 - 2024. All rights reserved.