.net 条件式:如果应用程序是从IDE启动的,那么(执行此操作)其他操作(不执行任何操作)
只有从IDE?启动应用程序时,才可以执行部分代码 我想做一个条件,如果应用程序是从VS IDE启动的,那么做一件事,但是如果应用程序是从编译中手动启动的(从windows资源管理器,在编译后的应用程序中单击,等等),那么做另一件事 这是可能的吗 类似于此,但将调试更改为(未知事物…):.net 条件式:如果应用程序是从IDE启动的,那么(执行此操作)其他操作(不执行任何操作),.net,vb.net,visual-studio,compiler-construction,ide,.net,Vb.net,Visual Studio,Compiler Construction,Ide,只有从IDE?启动应用程序时,才可以执行部分代码 我想做一个条件,如果应用程序是从VS IDE启动的,那么做一件事,但是如果应用程序是从编译中手动启动的(从windows资源管理器,在编译后的应用程序中单击,等等),那么做另一件事 这是可能的吗 类似于此,但将调试更改为(未知事物…): 添加命令行开关以启用额外功能,并通过调试设置从VisualStudio传入该功能 或者使用System.Diagnostics.Debugger.IsAttached添加命令行开关以启用额外功能,并通过调试设置从
添加命令行开关以启用额外功能,并通过调试设置从VisualStudio传入该功能
或者使用
System.Diagnostics.Debugger.IsAttached
添加命令行开关以启用额外功能,并通过调试设置从Visual Studio传入该功能
或者使用
System.Diagnostics.Debugger.IsAttached
您真正想做的是检测应用程序的进程是否附加了调试器
为此,请测试的值。如果返回true
,则附加调试器
当然,您可以将VisualStudio以外的调试器附加到进程,这仍然会导致IsAttached
返回true
。您可以从VisualStudio启动应用程序,而无需附加调试器(通常通过按Ctrl+F5),这将导致IsAttached
返回false
。但是,无论您有条件地执行什么代码,都有可能在附加了调试器的所有情况下运行,并且无论调试器是哪个调试器,都不应该在未附加调试器时运行
请注意,这不同于“如果调试”,因为它测试您是否正在运行应用程序的调试版本。调试生成与是否附加调试程序无关。您可以在不附加调试器的情况下进行调试生成,也可以将调试器附加到发布生成
但是,我真的不建议将此用于您在问题中提出的建议。如果每次附加调试器时都以不同的方式处理窗口放置问题,您将如何调试这些问题 您真正想做的是检测应用程序的进程是否附加了调试器 为此,请测试的值。如果返回
true
,则附加调试器
当然,您可以将VisualStudio以外的调试器附加到进程,这仍然会导致IsAttached
返回true
。您可以从VisualStudio启动应用程序,而无需附加调试器(通常通过按Ctrl+F5),这将导致IsAttached
返回false
。但是,无论您有条件地执行什么代码,都有可能在附加了调试器的所有情况下运行,并且无论调试器是哪个调试器,都不应该在未附加调试器时运行
请注意,这不同于“如果调试”,因为它测试您是否正在运行应用程序的调试版本。调试生成与是否附加调试程序无关。您可以在不附加调试器的情况下进行调试生成,也可以将调试器附加到发布生成
但是,我真的不建议将此用于您在问题中提出的建议。如果每次附加调试器时都以不同的方式处理窗口放置问题,您将如何调试这些问题 非常感谢,我有一个愚蠢的问题,我对术语“调试器附件”有点迷茫,如果我在操作系统中为我的应用程序选择一个默认调试器而不是VS调试器,那么默认调试器就是“附件”?还是仅仅是“定义”?我知道在编译的代码中不能附加调试器,但我不知道附加调试器是什么意思对不起。@Elektro我不确定在操作系统中选择默认调试器是什么意思。当应用程序因未处理的异常而崩溃时,操作系统将提示您将事后调试程序附加到进程(如果有)。如果安装了VisualStudio,情况就是这样。但调试器在您请求之前不会附加。否则,当您按
F5
或从VS运行应用程序时,调试器将自动连接,无论是调试版本还是发布版本。您必须按Ctrl+F5
启动而不连接调试器,或者在VS之外启动调试器。所有代码都已编译。它必须是为了执行它。所以这与此无关。非常感谢,我有一个愚蠢的问题,我对术语“调试器附件”有点迷茫,如果我在操作系统中为我的应用程序选择一个默认调试器而不是VS调试器,那么默认调试器是“附件”的?还是仅仅是“定义”?我知道在编译的代码中不能附加调试器,但我不知道附加调试器是什么意思对不起。@Elektro我不确定在操作系统中选择默认调试器是什么意思。当应用程序因未处理的异常而崩溃时,操作系统将提示您将事后调试程序附加到进程(如果有)。如果安装了VisualStudio,情况就是这样。但调试器在您请求之前不会附加。否则,当您按F5
或从VS运行应用程序时,调试器将自动连接,无论是调试版本还是发布版本。您必须按Ctrl+F5
启动而不连接调试器,或者在VS之外启动调试器。所有代码都已编译。它必须是为了执行它。所以这与此无关。
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