Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 代码分析和SupersMessage-是否应使用#if DEBUG包装属性_C#_Visual Studio 2015_Code Analysis_Roslyn - Fatal编程技术网

C# 代码分析和SupersMessage-是否应使用#if DEBUG包装属性

C# 代码分析和SupersMessage-是否应使用#if DEBUG包装属性,c#,visual-studio-2015,code-analysis,roslyn,C#,Visual Studio 2015,Code Analysis,Roslyn,我正在研究使用SupersMessage来获取一些CA警告。SupersMessage的文档说要确保它不在发布版本中。相应地,supersMessage属性是否应包装在#if DEBUG中,如下所示 public class Class1 { #if DEBUG [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "

我正在研究使用SupersMessage来获取一些CA警告。SupersMessage的文档说要确保它不在发布版本中。相应地,supersMessage属性是否应包装在#if DEBUG中,如下所示

public class Class1
{
#if DEBUG
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "args")]
#endif
    static void Main(string[] args) { }

#if DEBUG
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage",
    "CA1806:DoNotIgnoreMethodResults", MessageId = "System.Guid")]
#endif
    public static bool IsValidGuid(string guid)
    {
        try
        {
            new Guid(guid); //Causes CA1806: DoNotIgnoreMethodResults
            return true;
        }
        catch (ArgumentNullException) { }
        catch (OverflowException) { }
        catch (FormatException) { }
        return false;
    }
}
参考:有关更多信息,请参阅

您不应在发布版本上使用源代码内抑制,以防止意外传送源代码内抑制元数据。由于源代码内抑制的处理成本,还可以通过包含源代码内抑制元数据来降低应用程序的性能


不,你不应该。只需确保发布版本未定义条件编译符号
code\u ANALYSIS

原因是
SuppressMessageAttribute
有一个
[ConditionalAttribute(“code\u ANALYSIS”)]
,这意味着它不会包含在输出DLL中,除非定义了
code\u ANALYSIS

正如上面所说:

将ConditionalAttribute应用于属性表示除非定义了条件编译符号,否则不应将该属性发送到元数据


请注意,打开“在生成时启用代码分析”可能会将条件编译符号Code\u Analysis添加到生成设置中,因此请确保在发布生成时不是这样。

文档还声明属性类的属性为[条件属性(“代码分析”)],从来没有考虑过这一点,但也许它不在发布版本中?