【问题标题】:c# using #if DEBUG [duplicate]c#使用#if DEBUG [重复]
【发布时间】:2012-12-17 00:53:15
【问题描述】:

可能重复:
#if Not Debug in c#?

我没有上传到服务器的权限,所以我无法测试#else 部分。 我想知道这是否是有条件地选择要使用的驱动器号的理想方式 取决于是处于调试(测试模式)还是生产模式(#else 部分)

    #if (DEBUG)
     string driveLetter = "C:\\";
    #else
      string driveLetter = ConfigurationManager.AppSettings["ProdDrive"]; 
    #endif

【问题讨论】:

  • 当您从配置文件中选择驱动器时,我认为不需要调试标志。只需在开发和生产模式下修改配置文件即可。
  • 为什么不只使用配置? IE。为什么不直接使用 C:\ 配置测试版本?
  • 想想当您有大量应用程序设置时您将在代码中强加的复杂性! Scott Hanselman 写了一篇关于通过 Visual Studio 配置管理器管理配置文件的文章:hanselman.com/blog/…

标签: c#


【解决方案1】:

作为替代方案,考虑到您使用的是配置文件,只需根据调试与否修改配置文件。虽然调试版本通常不部署在生产环境中,但它们可以用来追踪其他不可重现的问题。

【讨论】:

    【解决方案2】:

    扩展来自@Mike.Beeler 的答案我强烈建议您为此使用Slow Cheetah。 Slow Cheetah 根据当前构建配置为您的项目提供任何 XML(包括 .config)文件的 XML 转换。

    最常见的用途是自动设置正确的数据库连接字符串,但您也可以使用它来设置应用设置。

    这是微软员工提供的免费 VS 扩展

    http://visualstudiogallery.msdn.microsoft.com/69023d00-a4f9-4a34-a6cd-7e854ba318b5

    【讨论】:

      【解决方案3】:

      您可以添加此代码

      #define ANOTHERVALUE
      

      注意:删除#define DEBUG

      【讨论】:

        【解决方案4】:

        是的,你可以。

        这是我从this msdn link 中提取的一些示例代码:

        // preprocessor_if.cs
        #define DEBUG 
        #define MYTEST
        using System;
        public class MyClass 
        {
            static void Main() 
            {
        #if (DEBUG && !MYTEST)
                Console.WriteLine("DEBUG is defined");
        #elif (!DEBUG && MYTEST)
                Console.WriteLine("MYTEST is defined");
        #elif (DEBUG && MYTEST)
                Console.WriteLine("DEBUG and MYTEST are defined");
        #else
                Console.WriteLine("DEBUG and MYTEST are not defined");
        #endif
            }
        }
        

        【讨论】:

        • 仅仅发布到另一个站点的链接不被认为是一个好的答案。该链接将来可能会被删除。请为您的答案添加一些解释-
        • 在链接中找到的好点添加示例。
        猜你喜欢
        • 2011-04-16
        • 1970-01-01
        • 1970-01-01
        • 2014-10-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多