有一种方法可以仅在从 IDE 启动应用程序时执行部分代码?。
我想设置一个条件,如果应用程序是从 VS IDE 启动的,则执行一件事,但如果应用程序是从编译中手动启动的(从 Windows 资源管理器,单击已编译的应用程序等),则执行其他操作。
这可能吗?
类似这样的东西,但是将 #Debug 更改为(未知的事情...):
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
您真正想要做的是检测是否有调试器附加到您的应用程序进程。
System.Diagnostics.Debugger.IsAttached
属性 的值。如果它返回 true
,则已附加调试器。
当然,您可以将除 Visual Studio 之外的调试器附加到进程,这仍然会导致
IsAttached
返回 true
。您可以在不附加调试器的情况下从 Visual Studio 启动应用程序(通常按 Ctrl+F5),这将导致 IsAttached
返回
false
。但是很有可能,您有条件执行的任何代码都应该在附加了调试器的所有情况下运行,并且无论调试器是哪个调试器,都应该“不”在“不”附加调试器时运行。请注意,这与
#If DEBUG
不同,因为它测试您是否正在运行应用程序的调试版本。调试版本与是否附加调试器无关。您可以在不附加调试器的情况下进行调试构建,或者将调试器附加到发布构建。
但是
,我真的不建议将其用于您在问题中提出的建议。如果每次附加调试器时都以不同的方式进行操作,您将如何调试窗口放置问题?添加命令行开关以启用额外功能,并通过调试设置从 Visual Studio 传入该功能? 或使用
System.Diagnostics.Debugger.IsAttached