有条件的:如果应用程序从IDE启动然后(执行此操作)else(不执行任何操作)

时间:2013-04-26 22:04:53

标签: .net vb.net visual-studio compiler-construction ide

如果从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

2 个答案:

答案 0 :(得分:3)

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

为此,请测试System.Diagnostics.Debugger.IsAttached property的值。如果它返回true,则附加调试器。

当然,您可以将Visual Studio以外的调试程序附加到该进程,这仍然会导致IsAttached返回true。你可以从Visual Studio 启动一个应用程序而不用连接调试器(通常按 Ctrl + F5 ),这将导致{{1返回IsAttached。但是,无论您有条件执行的任何代码都应该在附加调试器的所有情况下运行,并且只要调试器连接,运行,无论使用哪个调试器,都很有可能。它是。

请注意,这与false不同,因为它会测试您是否正在运行应用程序的Debug版本。调试版本与是否附加调试器无关。您可以在没有附加调试器的情况下使用Debug构建,也可以将调试器附加到Release构建。

但是 ,我真的不建议您在问题中使用此功能。如果每次连接调试器时都采用不同的方式,那么如何调试窗口放置问题?

答案 1 :(得分:1)

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

或使用System.Diagnostics.Debugger.IsAttached