VS2010: автоматически сгенерированные файлы и документация XML - PullRequest
19 голосов
/ 02 сентября 2010

На самом деле это просто повторный запрос этот вопрос задавался о Visual Studio 2008 .Предлагает ли VS2010 какую-либо функцию, чтобы избавиться от предупреждения компилятора CS1591 для автоматически сгенерированного кода?

CS1591: Missing XML comment for publicly visible type or member

Чтобы процитировать вопрос для VS2008:

Это раздражение больше, чем проблема.Мой проект содержит несколько автоматически сгенерированных файлов (используя mgmtclassgen.exe).Когда я генерирую документацию XML, моя прекрасно прокомментированная библиотека страдает от предупреждений XML-документации от этих файлов автогенов.

Есть ли способ а) подавить создание документации для этих файлов или б) подавить предупреждение CS1591 только длянабор файлов?Я, очевидно, не хочу изменять автоматически генерируемые файлы, даже если просто добавить прагмы подавления.

РЕДАКТИРОВАТЬ: в моем случае файлы-нарушители создаются службами WCF RIA, поэтому файл, который являетсягенерация ошибок - это автоматически сгенерированный класс WebContext (MyProject.BusinessApplication.Web.g.cs).

Я не могу вручную изменить этот файл, потому что он генерируется на лету, все изменения будут уничтожены.Я также не хочу глобально отключать предупреждение, так как оно полезно в моем неавтоматизированном коде.

Ответы [ 4 ]

12 голосов
/ 08 августа 2012

У меня была похожая проблема с автоматически сгенерированными классами структуры сущностей. Мне удалось решить это, изменив файл шаблона. Это очевидно не будет работать для всех автоматически сгенерированных сценариев и может не относиться к вашему конкретному сценарию RIA, но я опубликую здесь для всех, у кого может быть такая же проблема.

Откройте файл шаблона (thing.tt) и найдите автоматически сгенерированный раздел комментариев xml

//------------------------------------------------------------------------------
// <auto-generated>
//    This code was generated from a template.
//
//    Manual changes to this file may cause unexpected behavior in your application.
//    Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

Добавьте следующую строку сразу после блока комментария

#pragma warning disable 1591 

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

if (!String.IsNullOrEmpty(ObjectNamespace))
{
    PopIndent();
#>
}

Поместите следующую строку после этой закрывающей скобки

#pragma warning restore 1591

Если все работало правильно, всякий раз, когда ваши классы автоматически генерируются Entity Framework, они должны быть заключены в прагматические операторы disable / restore. Это должно подавлять предупреждения об отсутствии комментариев XML в ваших классах EF без подавления предупреждений на уровне проекта.

2 голосов
/ 01 декабря 2010

Следующая статья может дать вам несколько советов по решению проблемы: http://lvquoc.blogspot.com/2010/11/disable-xml-comment-warning-in-workflow.html

Важной частью статьи является комментарий Алана Макби: для отключения предупреждений, генерируемых в рабочем процессе Windows VS2012 +, добавьте это внижняя часть файла вашего проекта:

<Target Name="XamlGeneratedCodeWarningRemoved" AfterTargets="MarkupCompilePass2">
  <Exec Command="for %%f in (@(_GeneratedCodeFiles)) do echo #pragma warning disable 1591 > %%f.temp" />
  <Exec Command="for %%f in (@(_GeneratedCodeFiles)) do type %%f >> %%f.temp" />
  <Exec Command="for %%f in (@(_GeneratedCodeFiles)) do echo #pragma warning restore 1591 >> %%f.temp" />
  <Exec Command="for %%f in (@(_GeneratedCodeFiles)) do move /y %%f.temp %%f" />
  <Message Text="Xaml Generated Code Warnings Removed: @(_GeneratedCodeFiles)" />
</Target>
1 голос
/ 09 мая 2012

Одновременно с решением Quam Loc можно отключить предупреждения в файлах, сгенерированных RIA, используя цель сборки:

<Target Name="CreateRiaClientFilesTaskDisableWarnings" AfterTargets="CreateRiaClientFiles">
  <Exec Command="for %%f in (@(RiaClientGeneratedFiles)) do echo #pragma warning disable &gt; %%f.temp" />
  <Exec Command="for %%f in (@(RiaClientGeneratedFiles)) do type %%f &gt;&gt; %%f.temp" />
  <Exec Command="for %%f in (@(RiaClientGeneratedFiles)) do attrib -r %%f" />
  <Exec Command="for %%f in (@(RiaClientGeneratedFiles)) do move /y %%f.temp %%f" />
  <Exec Command="for %%f in (@(RiaClientGeneratedFiles)) do attrib +r %%f" />
  <Message Text="CreateRiaClientFilesTaskDisableWarnings: @(RiaClientGeneratedFiles)" />
</Target>

Я только что написал об этом в моем блоге .

0 голосов
/ 28 августа 2015

Я столкнулся с подобной проблемой. То, что я сделал, было на любой странице, если для пространства имен нет комментариев XML, просто добавьте строку кода ниже, и вы не столкнетесь с подобной ошибкой.

'/// <summary>
/// Namespace provides implementation for ABC classes.
/// </summary>
[System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
class NamespaceDoc
{
}'
...