2013-04-26 29 views
2

还有就是要执行的代码部分只有当应用程序从IDE推出了一个办法?条件,如:如果应用程序从IDE然后启动(这样做)其他(什么都不做)

我想做一个条件,如果应用程序从VS IDE启动,然后做一件事,但如果应用程序从编译手动启动(从Windows资源管理器,单击编译的应用程序等),然后做其他的东西。

这可能吗?

这样的事情,但改变#调试到(未知的东西...):

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 

回答

3

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

为了做到这一点,测试System.Diagnostics.Debugger.IsAttached property的价值。如果它返回true,则附加一个调试器。

当然,您可以将Visual Studio以外的调试器附加到该进程,并且仍然会导致IsAttached返回true。你可以(通常可以通过按Ctrl键+ F5 )开始从Visual Studio 的应用程序,而不连接调试器,这将导致IsAttached返回false。但有很好的机会,无论你的代码有条件地执行应在所有情况下运行调试器附加,也应该运行每当一个调试器是连接,无论哪个调试器是。

注意,这是从#If DEBUG不同,因为该测试是否你正在运行的应用程序的调试版本。调试版本与调试器是否连接无关。您可以在没有附加调试器的情况下拥有Debug版本,或者将调试器附加到Release版本。

但是,我真的不建议在问题中提出这个建议。如果每次连接调试器时以不同的方式调试窗口,您将如何调试问题?

+0

谢谢你,我有一个愚蠢的问题,如果我在我的操作系统中为我的应用程序而不是VS调试器选择一个默认调试器,那么我有点失去了“调试器附件”调试器是“附加的”?或者只是“定义”?我不能附加在编译代码中的knoe,但是,我不知道什么意思附加一个调试器抱歉。 – ElektroStudios 2013-04-26 22:16:40

+0

@Elektro我不确定你在操作系统中选择一个默认的调试器是什么意思。当应用程序崩溃并出现未处理的异常时,操作系统将提示您将验尸调试程序附加到进程(如果有)。如果安装了Visual Studio,就会出现这种情况。但调试器在您请求它之前不会连接。否则,当您按下'F5'或以其他方式从VS运行您的应用程序时,调试器会自动连接,无论它是否为Debug或Release版本。你必须按下'Ctrl' +'F5'才能在没有附加调试器的情况下启动,或者在VS之外启动它。 – 2013-04-26 22:18:54

+0

编译所有代码。它必须是为了执行它。所以这与它无关。 – 2013-04-26 22:19:20

1

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

或者使用System.Diagnostics.Debugger.IsAttached

+0

谢谢! Debugger.IsAttached工作 – ElektroStudios 2013-04-26 22:17:00

相关问题