1

我在尝试使用任何部署成员时遇到此异常,例如我在这个简单的代码中尝试:

Public Class Form1

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    MsgBox(If(My.Application.Deployment.IsFirstRun, "Yes", "No"))

End Sub

End Class

异常消息:Application identity is not set

该异常发生在调试和发布中,在 VS2012 中,针对 Winforms 中的 FW 4.0。

我在这里读过:应用程序标识未设置异常

...还有这里:InvalidDeploymentException - 未设置应用程序标识

我不记得如何在项目设置中停用异常检查,但无论如何有一种方法可以在不手动禁用异常的情况下避免此异常?

原因只是我不想手动禁用异常并记住为我存储的每个项目和未来的项目都这样做,我想以自然的方式解决这个问题。

4

2 回答 2

5

它是 ClickOnce 应用程序吗?是网络部署的吗?你在调试吗?这在调试模式下不起作用。

如果您正在调试,请使用它来测试:

If Not System.Diagnostics.Debugger.IsAttached Then
    firstRun = My.Application.Deployment.IsFirstRun
End If

-

由于它不是网络部署的应用程序,我会检查该应用程序之前是否已启动,保存用户设置或在注册表中建立值。

于 2013-10-17T13:47:44.497 回答
1

您调用的方法仅适用于单击一次部署的应用程序。您必须将所有部署代码包含在 IF 中,如下所示:

If System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed Then
...Your code here
End If

否则会出错。

这确实使调试代码变得困难,因为它只会在部署时运行,但您应该创建一个带有消息框的测试应用程序以查看发生了什么。

如果您不创建单击一次部署,请不要使用这些类!

于 2013-10-17T14:16:39.930 回答