2

アプリケーションが IDE から起動された場合にのみ、コードの一部を実行する方法はありますか?

アプリケーションがVS IDEから起動された場合は1つのことを行いますが、アプリケーションがコンパイルから手動で起動された場合(Windowsエクスプローラーから、コンパイルされたアプリをクリックするなど...)、別のことを行います。

これは可能ですか?

このようなものですが、#Debugを (Unknown thing...) に変更します:

Public Class Form2

    Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
#If DEBUG Then
        Me.Location = New Point(Form1.Right, Form1.Top)
#Else
        Dim BorderWidth = (Me.Width - Me.ClientSize.Width)
        Me.Location = New Point((Form1.Location.X + (Form1.Width + BorderWidth)), Form1.Location.Y)
#End If
    End Sub

End Class
4

2 に答える 2

3

本当にやりたいことは、アプリケーションのプロセスにデバッガーが接続されているかどうかを検出することです。

System.Diagnostics.Debugger.IsAttachedこれを行うには、プロパティの値をテストします。が返された場合true、デバッガがアタッチされています。

もちろん、Visual Studio 以外のデバッガーをプロセスにアタッチすることもできますが、IsAttachedそれでもtrue. また、デバッガーをアタッチせずCtrlに (通常は+を押すことF5で) Visual Studio からアプリケーションを起動できます。これによりIsAttached、 が返されfalseます。ただし、条件付きで実行するコードは、デバッガーがアタッチされているすべてのケースで実行され、デバッガーがアタッチされていない場合は、デバッガーが何であるかに関係なく実行されない可能性あります。

#If DEBUGアプリケーションのデバッグ ビルドを実行しているかどうかをテストするため、これは とは異なることに注意してください。デバッグ ビルドは、デバッガーがアタッチされているかどうかとは関係ありません。デバッガーをアタッチせずにデバッグ ビルドを作成することも、デバッガーをリリース ビルドにアタッチすることもできます。

しかし、質問で提案したものにこれを使用することはお勧めしません。デバッガーがアタッチされるたびに異なる方法でウィンドウの配置に関する問題をデバッグするにはどうすればよいでしょうか?

于 2013-04-26T22:11:14.763 に答える