【问题标题】:What is the best way in c# to determine whether the programmer is running the program via IDE or it's user?c# 中确定程序员是通过 IDE 运行程序还是通过用户运行程序的最佳方法是什么?
【发布时间】:2011-01-01 13:20:16
【问题描述】:

在 c# 中确定程序员是通过 IDE 运行程序还是通过其用户运行程序的最佳方法是什么?

【问题讨论】:

    标签: c# winforms


    【解决方案1】:
    if (System.Diagnostics.Debugger.IsAttached) {
        // You are debugging
    }
    

    【讨论】:

    • 那么,当用户运行您的程序然后您将调试器附加到它时会发生什么?
    • 然后用户正在运行应用程序。使用 IDE(假设所有调试器都是 IDE 的一部分)。我想问题发布者想知道是否有调试器正在运行,不一定有 IDE 正在运行。
    • 据我所知,了解应用程序是否正在运行的唯一方法,例如Visual Studio,无论是否处于调试模式(大多数人都知道,您可以在没有 VS 调试器的情况下运行应用程序)是 mkus 的解决方案。
    • tomekszpakowicz ,您的意思是程序员在构建程序时设置为调试而不是发布,然后用户运行生成的 .exe 文件?
    • 我认为他的意思是程序是通过从 bin/debug 或 bin/release 文件夹启动 .exe 在 IDE 之外启动的。运行应用程序。从 IDE 中运行并不意味着必须附加调试器,也不意味着在 IDE 外部运行时没有附加调试器。
    【解决方案2】:
    public static bool IsInVisualStudio
    {
        get
        {
            bool inIDE = false;
            string[] args = System.Environment.GetCommandLineArgs();
            if (args != null && args.Length > 0)
            {
                string prgName = args[0].ToUpper();
                inIDE = prgName.EndsWith("VSHOST.EXE");
            }
            return inIDE;
        }
    }
    

    【讨论】:

    • if (String.IsNullOrEmpty(args) == false) { ... } 更好 imo :)
    • @Christian: args 是字符串数组,不是字符串。
    • 此外,与 if(String.IsNullOrEmpty()) 或 if(!String.NullOrEmpty()) 相比,判断真假的等式可能过于冗长。不过,这个问题的记录有点过时了。
    • 乔恩:哎呀,你是对的。我的错:/我会把它归咎于清晨 Webleeuw:它更冗长,但我个人觉得与否定运算符相比更容易阅读:)
    • 没关系,但启用 Visual Studio Hosting 进程是一个可以关闭的选项。
    猜你喜欢
    • 2019-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-11
    • 1970-01-01
    • 2013-01-03
    • 2018-04-15
    • 2014-02-09
    相关资源
    最近更新 更多