2

只有从 IDE 启动应用程序时,才能执行部分代码?

我想设置一个条件,如果应用程序是从 VS IDE 启动的,那么做一件事,但如果应用程序是从编译中手动启动的(从 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.IsAttachedproperty的值。如果它返回true,则附加一个调试器。

当然,您可以将除 Visual Studio 之外的调试器附加到该进程,这仍然会导致IsAttached返回true. 并且您可以在没有附加调试器的情况下从 Visual Studio 启动应用程序(通常通过按Ctrl+ F5),这将导致IsAttached返回false. 但是很有可能,您有条件地执行的任何代码都应该在附加了调试器的所有情况下运行,并且不应该在未附加调试器时运行,无论它是哪个调试器。

请注意,这与 不同#If DEBUG,因为它测试您是否正在运行应用程序的调试版本。调试构建与是否附加调试器无关。您可以在没有附加调试器的情况下进行调试构建,或者将调试器附加到发布构建。

但是,我真的不建议将它用于您在问题中提出的建议。如果每次附加调试器时都以不同的方式进行,您将如何调试窗口放置问题?

于 2013-04-26T22:11:14.763 回答
1

添加一个命令行开关以启用额外的功能,并通过调试设置从 Visual Studio 传递它?

或使用System.Diagnostics.Debugger.IsAttached.

于 2013-04-26T22:07:06.377 回答