В главной схеме вещей я не думаю, что она действительно имеет значение. Так как это - атрибут (эффективно метаданные), они не влияют на производительность кода. Однако действительно помните, что информация в атрибуте доступна любому использующему disassember как Отражатель.
проблема с хранением их в файле проекта FxCop состоит в том, что необходимо тогда удостовериться, что все используют тот же файл проекта и что файл проекта всегда перемещается с проектом (в этом регистрируются к управлению исходным кодом, что означает, что необходимо проверить его каждый раз, когда Вы хотите выполнить FxCop).
, Если бы Вы не хотите атрибуты SuppressMessage в своем производственном коде, Вы должны были бы только определить символ CODE_ANALYSIS в сборке, против которой Вы выполняете FxCop. Это действительно означает определять его или на Вашей Настройке отладочного процесса или добавлять дополнительные конфигурации. Атрибуты будут только скомпилированы в в код, когда символ будет определен.
С автоматизированной/ночной точки зрения сборки, можно создать использование конфигурации, которой определили символ, и затем создайте производственный выпуск без символа или сделайте две сборки - один с символом определенный, выполненный FxCop для получения нарушений, и затем другой сборки без определенного символа.
Атрибут SuppressMessage будет только добавлен к Вашему коду, если определение препроцессора CODE_ANALYSIS будет присутствовать во время компиляции. Можно проверить это путем рассмотрения определения атрибута в Reflector.exe. По умолчанию это не определяется в Выпуске, таким образом, он не будет влиять на производственный код.
Как правило, я только выполняю FxCop на сборках ОТЛАДКИ моего блока, где CODE_ANALYSIS определяется.
Нам рассеяли тонну вокруг производственного кода, и мы особенно не заботимся. Это не производит перфект, и имеющий некоторый неработоспособное выглядящий атрибут в классе часто дает мотивацию для удаления его если вообще возможный.