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

例外は、Winforms で FW 4.0 を対象とする VS2012 のデバッグおよびリリースでも発生します。

私はここで読んだ:アプリケーションIDが設定されていない例外

...そしてここにも: InvalidDeploymentException - アプリケーション ID が設定されていません

プロジェクト設定で例外チェックを無効にする方法を覚えていませんが、例外を手動で無効にせずにこの例外を回避する方法はありますか?

その理由は、例外を手動で無効にしたくないだけで、保存されているプロジェクトと将来のプロジェクトごとに例外を無効にすることを忘れないためです。この問題を自然な方法で修正したいのです。

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

呼び出しているメソッドは、クリック 1 回デプロイされたアプリケーションでのみ使用できます。次のように、すべての展開コードを IF で囲む必要があります。

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

そうしないと、エラーになります。

コードはデプロイされたときにのみ実行されるため、コードのデバッグが難しくなりますが、メッセージ ボックスを含むテスト アプリケーションを作成して、何が起こっているかを確認する必要があります。

クリック 1 回の配置を作成しない場合は、これらのクラスを使用しないでください。

于 2013-10-17T14:16:39.930 に答える