предупреждение анализа кода CA2000 которое не должно произойти


У меня небольшая проблема с предупреждением CA2000. В моем проекте, который установлен как startup project, я получаю это предупреждение, хотя оно не должно происходить.

Предыстория: Я использую Visual Studio 2010 с проектами в .NET 3.5. Проект запуска WPF-приложения.

В классе приложение выглядит следующим образом:

public partial class App : System.Windows.Application {

        /// <summary>
        /// Application Entry Point.
        /// </summary>
        [System.STAThreadAttribute()]
        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
        public static void Main() {
            AutoTester.App app = new AutoTester.App();
            app.Run();
        }
    }

Предупреждение гласит:

Предупреждение 1 CA2000: Microsoft.Надежность: в приложении method'.Main ()', система вызова.Интерфейс IDisposable.Dispose на объект "приложение", прежде чем все ссылки на него выходят за рамки нашего исследования. C:ProjectsFreelancesvnAutoTesterApplicationApplicationsAutoTesterobjx86DebugApp.g. cs 47 AutoTester

Как можно видеть, предупреждение появляется в приложении.g. cs, который является автоматически генерируемым файлом. В свойствах проекта я отключил анализ кода для автоматически генерируемых файлов. "Подавление результатов от автоматически сгенерированного кода". Поэтому такого предупреждения не должно быть, верно?

Теперь моя проблема в том, что я не могу локально подавить предупреждение потому что код будет переопределен. Кроме того, я не хочу создавать правило для этого глобально, потому что я не хочу деактивировать CA2000.

Кто-нибудь сталкивался с подобной проблемой или имел представление о том, что здесь происходит не так?

Наилучшие пожелания, Кристиан

1 3

1 ответ:

"подавление результатов из автоматически сгенерированного кода" означает, что результаты из автоматически сгенерированного кода не отображаются. Visual Studio знает, что код создается третьей стороной только в том случае, если он содержит GeneratedCodeAttribute (см. здесь). Очевидно, что инструмент, создавший ваш код, не добавил атрибут.

Вы можете попробовать создать другой частичный класс приложения и поместить туда атрибут:

[GeneratedCode("CodeGenerator", "1.0.0.0")]
public partial class App 
{
}