ClickOnce Windows Forms应用程序在尝试通过CheckForDetailedUpdate()更新时抛出异常。

3

我有一个使用Windows Forms的ClickOnce应用程序,它可以执行自己的应用程序更新。这个功能已经运行了几年,但最近的部署出现以下异常:

Message: Object reference not set to an instance of an object.
Source: System.Deployment
Target Site: System.Security.Policy.ApplicationTrust RequestTrust(System.Deployment.Application.SubscriptionState, Boolean, Boolean, System.ActivationContext, System.Security.Policy.TrustManagerContext)
Stack Trace:    at System.Deployment.Application.ApplicationTrust.RequestTrust(SubscriptionState subState, Boolean isShellVisible, Boolean isUpdate, ActivationContext actCtx, TrustManagerContext tmc)
   at System.Deployment.Application.DeploymentManager.DetermineTrustCore(Boolean blocking, TrustParams tp)
   at System.Deployment.Application.DeploymentManager.DetermineTrust(TrustParams trustParams)
   at System.Deployment.Application.ApplicationDeployment.CheckForDetailedUpdate(Boolean persistUpdateCheckResult)
   at System.Deployment.Application.ApplicationDeployment.CheckForDetailedUpdate()
   at SCANit.Inventory.ClickOnce.CheckForDetailedUpdate()
   at SCANit.Inventory.AppUpdaterService.StatusOfUpdate(Boolean notify)
   at SCANit.Inventory.AppUpdaterService.PerformAppUpdate()
   at SCANitApp.MainApplication.updateMenuItem_ItemClick(Object sender, ItemClickEventArgs e)

我的尝试搜索错误显示可能是由于一个过期的证书,.pfx。然而,我生成了一个有效期很长的证书。我在上一次部署的 .pfx 和应用程序的 .csproj 中使用Git进行了比较,没有发现实质性的差异。这里可能发生了什么?

1个回答

1

非常抱歉,我发现了一个之前没有注意到的.csproj文件中的差异:

<PlatformTarget>x86</ PlatformTarget> 

当将应用程序更改为 AnyCpu 时,似乎已经解决了这个问题。


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