Я пишу пользовательские правила анализа кода для Visual Studio 2010 (в основном FxCop, но самая новая версия).Я пытаюсь получить атрибут (или совокупность всех атрибутов), применяемый к проверяемой сборке, используя код, подобный следующему:
public override ProblemCollection Check( ModuleNode module )
{
AssemblyNode assembly = module as AssemblyNode;
if ( assembly != null )
{
Identifier ns = Identifier.For( "System.Reflection" );
Identifier attr = Identifier.For( "AssemblyCopyrightAttribute" );
TypeNode type = assembly.GetType( ns, attr );
...
... но тип 'всегда равен нулю,даже когда я точно знаю, что такой атрибут определен для сборки.
Более того ... когда я отлаживаю это, я вижу, что коллекция assembly.ModuleAttributes пуста, как и ExportedTypes, как и модули... похоже, что сборка вообще ничего не содержит!Однако «базовый» ModuleNode полностью заполнен и, например, содержит 14 атрибутов в своей коллекции атрибутов.
Как будто «модуль как AssemblyNode» неверен, но если это так, он возвращает ноль!Может кто-нибудь объяснить, что я делаю не так?