优雅的方式来停止发布编译错误

时间:2012-02-06 15:06:56

标签: c#

在您开发过程中,您经常使用

之类的东西
throw new NotImplementedException("Finish this off later") 

// TODO - Finish this off later

作为占位符,提醒您完成某些事情 - 但这些可能会被遗漏并错误地在发布中结束。

您可以使用类似

的内容
#if RELEASE
   Finish this off later
#endif

所以它不会在Release版本中编译 - 但是有更优雅的方式吗?

4 个答案:

答案 0 :(得分:11)

我看到了一个优雅的实现here

#if DEBUG

namespace FakeItEasy
{
    using System;
    using System.Diagnostics.CodeAnalysis;

    /// <summary>
    /// An exception that can be thrown before a member has been
    /// implemented, will cause the build to fail when not built in 
    /// debug mode.
    /// </summary>
    [Serializable]
    [SuppressMessage("Microsoft.Design",   
        "CA1032:ImplementStandardExceptionConstructors", 
        Justification = "Never used in production.")]
    public class MustBeImplementedException
        : Exception
    {
    }
}

#endif

答案 1 :(得分:10)

我建议使用#warning

#warning Finish this off later

Release配置集Treat Warnings as ErrorsTrue

在Debug中的这种情况下,您只会将其视为警告,但在发布时它会抛出异常。

答案 2 :(得分:10)

您可以使用#error#warning指令来抛出自己的构建错误和警告:

#if RELEASE
#error Not finished!
#endif

http://msdn.microsoft.com/en-us/library/c8tk0xsk(v=vs.80).aspx

答案 3 :(得分:1)

你可以将它封装在它自己的方法中,这样只需要在一个地方更改它就可以进行发布构建。

void NotImplemented()
{
    #if RELEASE
        Finish this off later
    #endif
}