7

MVC4 और VS2012 के साथ काम करते हुए, मैं Service Reference का उपयोग कर रहा हूं, जो ऑटो Reference.cs फ़ाइल उत्पन्न करता है। जब मैं निर्माण, मैं त्रुटियों को पढ़ServiceReference .cs फ़ाइल के लिए Xml चेतावनी को दबाएं

के रूप में चेतावनी के दर्जनों के लिए 'सार्वजनिक रूप से दिखाई प्रकार या सदस्य के लिए लापता XML टिप्पणी ...'

मैं एक ऐसी ही जवाब here है, जो एक का संदर्भ पाया है वैकल्पिक हल इस blog में पाया है, जो 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> 

लेकिन इस Reference.cs फ़ाइल के साथ कार्य करने के लिए, शायद इसलिए कि प्रतीत नहीं होता यह Xaml को लक्षित कर रहा है? क्या कोई मुझे बता सकता है कि मैं इसे Reference.cs फ़ाइल के साथ काम करने के लिए कैसे ठीक कर सकता हूं या इस समस्या को हल करने का एक और तरीका सुझा सकता हूं?

मैं ऑटो उत्पन्न जेनरेट कोड में pragma disable नहीं जोड़ सकता या Xml टिप्पणियों को अक्षम नहीं कर सकता।

उत्तर

6

फ्लाई पर पूर्व-जेनरेट की गई .cs फ़ाइलों को अपडेट करना cause all sorts of issues with Visual Studio, since it will use the in-memory copy of the files होगा। और यह स्रोत नियंत्रण एकीकरण के कारण बहुत परेशान होगा क्योंकि फ़ाइलों को केवल पढ़ने के लिए और प्रत्येक निर्माण के बाद फ़ाइलों को चेक करने की आवश्यकता होती है।

आप अपनी संपत्ति क्लाइंट को अपनी संपत्तियों को बदलकर आंतरिक बना सकते हैं। आपकी सेटिंग्स के आधार पर, प्रलेखन पीढ़ी किसी भी विधि के बारे में शिकायत नहीं करेगी जो बाहरी रूप से दिखाई नहीं दे रही है। यह स्टाइलकॉप, कोड विश्लेषण या रिशेर्पर चेतावनियों को तब भी ट्रिगर कर सकता है ...

तो मैं आमतौर पर जो करता हूं वह है, मैं अपने स्वयं के विजुअल स्टूडियो प्रोजेक्ट में सेवा संदर्भों को चिपकाता हूं, जेनरेट कोड सार्वजनिक करता हूं और दस्तावेज उत्पादन को बंद करता हूं पूरी परियोजना यह भी लाभ यह है कि आपकी सेवा संदर्भ परियोजना आप में शामिल करना होगा।

+0

अच्छा विचार जेसी, यह एक कोशिश करेगा। लेकिन निश्चित रूप से सेवा संदर्भ को अपने स्वयं के प्रोजेक्ट में ले जाने से इसे हल करने का एक बेहतर तरीका है? मुझे सीएसपीआरजे फाइलों या एमएसबिल्ड के बारे में ज्यादा जानकारी नहीं है, लेकिन आपके लिंक किए गए पेज को पढ़ने के बाद मुझे आश्चर्य है कि प्रीबिल्ड को मेरे प्रश्न के समान उदाहरण का उपयोग करके लक्षित किया जा सकता है? – DevDave

+1

हां, यह हो सकता है, लेकिन परिणामस्वरूप स्रोत नियंत्रण एकीकरण जा रहा है। प्रत्येक निर्माण के परिणामस्वरूप कई लंबित परिवर्तन होंगे। आप अपना कोड बुद्धिमान बना सकते हैं ताकि यह फ़ाइलों को फिर से अपडेट न करे, जो काम करना चाहिए। हालांकि मैं इसे पसंद करता हूं, कॉन्फ़िगर करने के लिए बहुत आसान और शामिल सभी परियोजना सदस्यों के लिए समझना आसान है। – jessehouwing

+0

आपके उत्तर के लिए धन्यवाद। मुझे एक और सवाल पूछना पड़ सकता है, लेकिन आश्चर्य कीजिए कि आप उसी जेनरेट कोड के साथ स्टाइलकॉप चेतावनियों के आसपास कैसे पहुंचेंगे? जैसा कि मेरे पास यह समस्या है जब मैं इस समस्या को हल करता हूं! – DevDave

1

मैंने यह भी पाया मैं जो Xml सारांश समस्या को हल हो जाता है निर्माण पर Internal रूप Service Reference सेट कर सकते हैं कि, की परवाह किए बिना एक ही बाइंडिंग का उपयोग होगा।

हालांकि यह अभी भी जेनरेट कोड के लिए StyleCop त्रुटियों को दबाने की समस्या के साथ छोड़ देता है, लेकिन मैं इसके लिए एक नया प्रश्न बनाउंगा।

+1

फुटनोट जोड़ें: यह काम नहीं कर सकता है, क्योंकि उत्पन्न होने वाली घटनाओं को सार्वजनिक के रूप में चिह्नित किया जाता है भले ही सेवा संदर्भ आंतरिक है। –

संबंधित मुद्दे