UWP - 未找到与提供的Thumbprint匹配的证书

22

我有一个 UWP 应用程序,需要在两台不同的设备上进行开发。在最新的 Visual Studio 2019 更新后,我开始收到以下错误:

未找到具有提供的指纹(thumbprint)的证书:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

该应用程序先前使用了Visual Studio自动生成的临时密钥,但现在已不再使用。我按照此链接https://learn.microsoft.com/en-us/windows/msix/package/create-certificate-package-signing上的说明生成了新的密钥文件,并在桌面机上成功使用了它。我能够在包清单中选择证书,在 csproj 文件中更新“PackageCertificateThumbprint”,然后构建和创建 sideload 包。

现在,转到我的笔记本电脑上,即使我把生成的证书带到那台电脑上,我还是会遇到上述错误。包 GUI 告诉我没有有效的证书可用。我尝试将该证书添加到本地计算机,但无效。

  1. 我应该做哪些步骤才能解决问题?
  2. 我的目标是在两个不同的工作站上进行开发,而不必每次切换工作站时都创建新的证书或更新 csproj 文件。

这是一个个人项目,目前还没有到需要去商店的地步,但我需要在两台电脑上进行开发,并创建一些侧载包给一组测试人员。


我不知道,最终我不想为一个业余项目购买证书,以便在多台机器上进行侧向加载或开发。我最终将该项目转换为WPF/.NET Core 3.1。对这个决定非常满意。我还创建了一个自签名证书,但当我在我的笔记本电脑/台式机之间切换时,Visual Studio仍然会给我错误提示。完全有可能是我没有正确设置(而且这是8-9个月前的事情,现在可能已经不同了)。 - b.pell
5个回答

35

谢谢。新安装了VS2019并加载了一个API示例来测试和学习。当然,它没有构建成功。 - dcarl661

3

可能是旧证书无效或没有可用的证书,因此我们需要按照以下方式创建新证书:

  1. 双击Package.appxmanifest文件
  2. 转到打包选项卡。
  3. 点击“选择证书…”按钮。
  4. 点击“创建”
  5. 如果开发者模式被禁用,请启用
  6. 点击“确定”
  7. 重新构建项目,它将正常工作。

1
这对我很有帮助。只是为了创建临时证书 :). BOOOM - praveena H M

2

卸载项目。 编辑项目文件。 确保包证书与您打算使用的证书相同。

当我切换到VS 2019时,它切换到了旧版本。


1
您可以尝试两种方法来解决这个问题:
  1. 清理解决方案,重新启动Visual Studio,然后重新构建解决方案。

  2. 删除测试证书。

此致敬礼。

1
谢谢您的回复。清理解决方案、重启再重建并没有起作用。我可以删除测试证书,然后创建一个新的,但我不想每次从桌面电脑切换到笔记本电脑时都这样做。我很好奇为什么包清单 UI 在一台机器上将证书视为有效并允许我选择它,而在另一台机器上却不能。 - b.pell
你好,请在将证书安装到笔记本电脑时,检查证书是否已导入到“本地计算机”->“受信任的根证书颁发机构”文件夹中。 - Richard Zhang
它在本地计算机 -> 受信任的根证书颁发机构中。清单UI仍然显示“没有证书符合应用程序标准”。我还将csproj中的Thumbprint更改为证书的Thumbprint。但是无法使用。这个证书在另一台计算机上可以工作。 - b.pell
1
好的,那么我需要从csproj文件中删除或清除“PackageCertificateThumbprint”(因为基于不同证书会有冲突值)?如果在计算机A上有一个证书并将其设置在清单中,它会将该“PackageCertificateThumbprint”放入csproj文件中。如果计算机B有不同的证书,则该值不再匹配并且必须被删除(这就是为什么我尝试使用相同的证书)。 - b.pell
2
您不需要修改 csproj 文件,通常情况下,您只需要重新构建项目。或者将 PackageCertificateThumbprint 设置为空字符串即可。 - Richard Zhang
显示剩余2条评论

0
当我在输出中收到这个时,我尝试从package.appxmanifest重新选择证书,选择从商店中选择,但是没有可用的选项可以选择,即使我手动安装了证书。

enter image description here

我有另一台电脑,没有出现这样的错误,我能够从相同的选项重新选择证书。显然是Windows或VS的问题。
以下是帮助我在两台机器上工作的方法:
打开*.csproj文件,删除PackageCertificateThumbprint的值,并在PackageCertificateKeyFile中设置存储证书文件的名称。
<PackageCertificateThumbprint></PackageCertificateThumbprint>
<HoursBetweenUpdateChecks>0</HoursBetweenUpdateChecks>
<PackageCertificateKeyFile>nameofTheApp_StoreKey.pfx</PackageCertificateKeyFile>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接