18

Questo è davvero solo ri-chiedere this question asked about Visual Studio 2008. VS2010 offre funzionalità per eliminare l'avviso del compilatore CS1591 per il codice generato automaticamente?VS2010: file generati automaticamente e documentazione XML

CS1591: Missing XML comment for publicly visible type or member

di citare la domanda per VS2008:

Si tratta di un fastidio più di un problema . Il mio progetto contiene il numero di file autogenerati (usando mgmtclassgen.exe). Quando viene generata la documentazione XML , la mia bellissima libreria commentata è afflitta da xml avvisi di documentazione da questi file autogen .

C'è un modo per sia a) sopprimere documentazione di generazione per questi file oppure b) sopprimere avviso CS1591 solo per un insieme di file? Ovviamente non voglio modificare i file che sono stati generati da , anche se è sufficiente aggiungere i prgmi di soppressione .

EDIT: Nel mio caso, i file incriminati sono generati da WCF RIA Services, quindi il file che genera gli errori è la classe WebContext auto-generata (MyProject.BusinessApplication.Web.g.cs).

Non riesco a modificare questo file perché è generato al volo, tutte le modifiche verranno cancellate. Inoltre, non desidero disattivare globalmente l'avviso, poiché è utile nel mio codice non generato automaticamente.

risposta

10

Stavo riscontrando un problema simile con le classi del framework entità generate automaticamente. Sono riuscito a risolverlo modificando il file del modello. Questo ovviamente non funzionerà per tutti gli scenari generati automaticamente e potrebbe non essere applicabile al tuo particolare scenario RIA, ma pubblicherò qui per chiunque altro stia avendo lo stesso problema.

Aprire il file di modello (something.tt) e trovare il xml commento sezione auto-generata

//------------------------------------------------------------------------------ 
// <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> 
//------------------------------------------------------------------------------ 

Aggiungere la seguente riga subito dopo il blocco di commento

#pragma warning disable 1591 

Un po 'inferiore a quello, dovresti trovare dove finisce il blocco del namespace.Sarà probabilmente simile a questo

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

inserire la seguente riga dopo quella parentesi graffa di chiusura

#pragma warning restore 1591 

Se tutto ha funzionato correttamente, ogni volta che le classi sono auto-generati da Entity Framework, essi devono essere avvolti da il disabilitare/ripristinare le istruzioni di pragma. Questo dovrebbe sopprimere gli avvertimenti su nessun commento XML nelle classi EF senza sopprimere gli avvertimenti a livello di progetto.

2

Il seguente articolo può innescare alcuni suggerimenti per risolvere il problema: http://lvquoc.blogspot.com/2010/11/disable-xml-comment-warning-in-workflow.html

La parte importante di questo articolo è il commento di Alan McBee: per disabilitare gli avvisi generati nelle finestre del flusso di lavoro VS2012 + aggiungere questo al fondo il file di progetto:

<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> 
+0

molto interessante, –

0

Simmilarily alla soluzione di Quam Loc è possibile disabilitare gli avvisi in RIA generato file utilizzando un target di generazione:

<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> 

Ho appena pubblicato su di esso su my blog.

0

Mi trovavo di fronte a problemi simili. Quello che ho fatto è stato in qualsiasi pagina se non ci sono commenti XML per Namespace, basta aggiungere la riga di codice sottostante e non si verificheranno errori simili.

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