2017-03-02 2 views
0

SuppressMessageAttribute은 어떻게 작동합니까? 이 msdn article에 따르면 나는 그것이 최종 조립으로 뭔가를한다는 의견을 냈습니다.SuppressMessageAttribute는 어떻게 작동합니까?

의 우리는 다음과 같은 방법을 가지고 있다고 가정하자 :

[SuppressMessage("Microsoft.Performance", "CA1804:RemoveUnusedLocals", MessageId = "myUnusedLocalIntVariable")] 
     public override string ToString() 
     { 
      int myUnusedLocalIntVariable = 5; 

      return String.Format($"Name: {Name}, age: {Age.ToString()}."); 
     } 

내가이 속성은 최종 조립에서 내 사용되지 않는 지역 변수를 제거 할 것을 기대합니다. 그래서 저는 ildasm을 사용하여 어셈블리를 보았습니다. 하지만 사용하지 않은 로컬 변수를 찾았습니다. 그리고 지금 어떻게 작동하는지 모르겠습니다. 사용할 수있는 가장 간단한 예제를 주시겠습니까?

+1

코드 분석 도구가 어셈블리를 검사하면 -이 속성이 표시되고 그렇지 않으면 주어진 메시지를 생성하지 않습니다. 어셈블리에서 아무 것도 변경하지 않습니다. 코드 분석은 정보를 제공하기위한 것입니다. – Evk

답변

1

이 (이름에서 알 수 있듯이) 단지 당신이 릴리스 모드 경우 제거 수있는 컴파일러에서 컴파일하면 그것은 당신의 코드

을 수정할 수 없습니다
경고를 표시하지 않도록 컴파일러를 알려줍니다 그것은 충분히 똑똑하거나 JIT 컴파일러는 아마 런타임에 그것을 할 것입니다.
어쨌든이 속성은 전혀 영향을주지 않습니다.