条件如:如果应用程序从 IDE 启动,则(执行此操作)否则(不执行任何操作)

问题描述 投票:0回答:2

有一种方法可以仅在从 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
.net vb.net visual-studio ide
2个回答
3
投票

您真正想要做的是检测是否有调试器附加到您的应用程序进程。

为此,请测试

System.Diagnostics.Debugger.IsAttached
属性 的值。如果它返回
true
,则已附加调试器。

当然,您可以将除 Visual Studio 之外的调试器附加到进程,这仍然会导致

IsAttached
返回
true
。您可以在不附加调试器的情况下从 Visual Studio 启动应用程序(通常按 Ctrl+F5),这将导致 IsAttached
 返回 
false
。但是很有可能,您有条件执行的任何代码都应该在附加了调试器的所有情况下运行,并且无论调试器是哪个调试器,都应该“不”在“不”附加调试器时运行。

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

但是

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

添加命令行开关以启用额外功能,并通过调试设置从 Visual Studio 传入该功能? 或使用

System.Diagnostics.Debugger.IsAttached

1
投票

© www.soinside.com 2019 - 2024. All rights reserved.