7

Lavorare con MVC4 e VS2012, Sto usando un Service Reference, che genera automaticamente un file Reference.cs. Quando costruisco, ricevo decine di avvisi come errori che leggonoSopprime avviso Xml per file .cs ServiceReference

'commento XML mancante per il tipo pubblicamente visibili o membro ...'

ho trovato una risposta simile here, che fa riferimento a un soluzione trovata in questo blog, che suggerisce di aggiungere la seguente correzione nel file CSProj:

<Target Name="XamlGeneratedCodeWarningRemoved" AfterTargets="XamlMarkupCompilePass1"> 
    <Exec Command="for %%f in (@(XamlGeneratedCodeFiles)) do echo #pragma warning disable > %%f.temp" /> 
    <Exec Command="for %%f in (@(XamlGeneratedCodeFiles)) do type %%f >> %%f.temp" /> 
    <Exec Command="for %%f in (@(XamlGeneratedCodeFiles)) do copy /y %%f.temp %%f" /> 
    <Message Text="XamlGeneratedCodeWarningRemoved: @(XamlGeneratedCodeFiles)" /> 
    </Target> 

Ma questo non sembra funzionare con il file Reference.cs, probabilmente perché è indirizzato allo Xaml? Qualcuno potrebbe dirmi come posso risolvere questo problema per funzionare con il file Reference.cs o suggerire un altro modo per ovviare a questo problema?

Non riesco a aggiungere un codice pragma disable nel codice generato automaticamente o disabilitare i commenti Xml.

risposta

6

L'aggiornamento dei file .cs pre-generati al volo sarà cause all sorts of issues with Visual Studio, since it will use the in-memory copy of the files. E sarà molto irritante a causa dell'integrazione del controllo del codice sorgente che rende i file di sola lettura e richiede che i file vengano archiviati dopo ogni generazione.

È anche possibile rendere interno il client di servizio modificando le sue proprietà. A seconda delle impostazioni, la generazione della documentazione non si lamenterà di alcun metodo non visibile esternamente. Questo potrebbe comunque far scattare gli avvertimenti StyleCop, Code Analysis o Resharper ...

Quindi quello che faccio di solito è inserire i riferimenti di servizio nel proprio progetto Visual Studio, rendere pubblico il codice generato e disattivare la generazione di documentazione per il intero progetto. Questo ha anche il vantaggio che il riferimento al servizio utilizzerà gli stessi attacchi a prescindere del progetto si include in.

+0

bella idea Jesse, ci provo. Ma sicuramente c'è un modo migliore per risolverlo che spostare il riferimento del servizio al proprio progetto? Non so molto sui file CSProj o MSBuild ma dopo aver letto la tua pagina collegata mi chiedo se la pre-build possa essere mirata usando un esempio simile alla mia domanda? – DevDave

+1

Sì, potrebbe, ma con l'integrazione del controllo del codice diventa impazzita come risultato. Ogni build comporterebbe un numero di modifiche in sospeso. Potresti rendere il tuo codice intelligente in modo che non rieseguirà l'aggiornamento dei file, ma dovrebbe funzionare. Preferisco questo, molto più facile da configurare e più facile da capire per tutti i membri del progetto coinvolti. – jessehouwing

+0

Grazie per la risposta. Potrei dover fare un'altra domanda, ma mi chiedo solo come si potrebbero aggirare gli avvertimenti di StyleCop con lo stesso codice generativo? Come ho quello che attendo con ansia quando risolvo questo problema! – DevDave

1

Ho anche scoperto che posso impostare la Service Reference come Internal sulla creazione, che aggira il problema Xml sintesi.

Anche se questo mi lascia ancora il problema di eliminare gli errori StyleCop per il codice generato, ma creerò una nuova domanda per questo.

+1

Nota a margine: potrebbe non funzionare, poiché gli eventi generati sono contrassegnati come pubblici anche se il riferimento del servizio è interno. –