我尝试使用任何部署成员时遇到此异常,例如我尝试使用这个简单的代码:
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为目标的发布中发生异常。
我在这里读到:Application identity not set Exception
......还在这里:InvalidDeploymentException - Application identity is not set
我不记得如何在项目设置中停用异常检查,但是如果没有手动禁用异常,有办法避免这种异常吗?
原因是我不想手动禁用异常并记得为我的每个存储和未来项目执行此操作,我想以自然的方式解决这个问题。
答案 0 :(得分:3)
是ClickOnce应用吗?它是网络部署?你在调试吗?这在调试模式下无效。
如果您正在调试,请使用它来测试:
If Not System.Diagnostics.Debugger.IsAttached Then
firstRun = My.Application.Deployment.IsFirstRun
End If
-
由于它不是网络部署的应用程序,我会检查先前是否已启动应用程序,保存用户设置或在注册表中建立值。
答案 1 :(得分:1)
您调用的方法仅适用于部署了一次点击的应用程序。您必须在IF中包围所有部署代码,如下所示:
If System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed Then
...Your code here
End If
否则会出错。
这确实使调试代码变得困难,因为它只会在部署时运行,但您应该创建一个带有消息框的测试应用程序,以查看正在发生的事情。
如果您没有创建一次性点击部署,请不要使用这些类!