Csproj फ़ाइल में "सेवा शामिल करें" क्या है?


194

C # समाधान में, मैंने एक मौजूदा प्रोजेक्ट जोड़ा।
उसके बाद, Visual Studio ने अन्य .csproj फ़ाइलों में निम्न प्रविष्टि जोड़ी है:

<ItemGroup>
    <Service Include="{B4F97281-0DBD-4835-9ED8-7DFB966E87FF}" />
</ItemGroup>

यह किस लिये है?
क्या मैं इसे हटा सकता हूं?


1
समाधान इसे हटाने के बाद सफलतापूर्वक संकलित किया गया - लेकिन सवाल यह है: रनटाइम पर क्या होता है? मुझे यह जानना है कि यह क्या करता है।
जो

जवाबों:


260

मेरे पास एक समान मामला था, जहां यह जोड़ा गया था:

<ItemGroup>
  <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
</ItemGroup>

यदि आप NUnit परीक्षण प्रोजेक्ट बनाते हैं, तो यह समावेशन VS2013 के उद्देश्य से उत्पन्न होता है, लेकिन इसे Microsoft द्वारा इस उत्तर में दिए गए परीक्षण प्रोजेक्ट के रूप में टैग करना न भूलें :

यह व्यवहार जानबूझकर किया गया है।

NUnit और XUnit जैसे तीसरे पक्ष के परीक्षण ढांचे का समर्थन करने के लिए, विजुअल स्टूडियो 2012 ने टेस्ट एक्सप्लोरर को समाधान पर लोड किया, भले ही इसमें परीक्षण परियोजनाएं शामिल हों। इसने स्टार्टअप और विलम्ब के खुले सेकंड को सभी उपयोगकर्ताओं के लिए जोड़ा, जिनमें से अधिकांश परीक्षण का उपयोग नहीं करते हैं।

विजुअल स्टूडियो 2013 में, हमने इसे बदल दिया ताकि टेस्ट एक्सप्लोरर पैकेज केवल तभी लोड हो जब समाधान में एक या अधिक परीक्षण प्रोजेक्ट शामिल हों। टेस्ट प्रोजेक्ट्स को दो अलग-अलग तरीकों से पहचाना जाता है। बिल्ट-इन यूनिट टेस्ट प्रोजेक्ट टेम्प्लेट में से एक से निर्मित प्रोजेक्ट्स को प्रोजेक्ट प्रकार GUID का उपयोग करके पहचाना जाता है। अन्य प्रकार की परियोजनाएं, जैसे कि XUnit या NUnit परीक्षणों के साथ क्लास लाइब्रेरी प्रोजेक्ट, पहले परीक्षण खोज के दौरान टेस्ट एक्सप्लोरर द्वारा पहचाने जाते हैं और <Service/>आइटम के साथ "टैग" किए जाते हैं ।


8
क्या यह अभी भी वीएस 15.3+ के लिए उपयोगी है?
जानूस व्रस

5
@ जानूसर्वस हां, यह अभी भी वीएस 15.4 में होता है (मैं व्यवहार को समझने की कोशिश कर रहा था और मुझे यहां ले आया)। मुझे यकीन नहीं है कि अगर प्रदर्शन का निर्णय फिर से लिया जाना चाहिए, अगर यह आपका सवाल था।
लार्स केम्मन

2
अभी भी 15.6 में होता है
dimaaan

2
@ एड्रियन यह है कि आप इसे एक परीक्षण परियोजना के रूप में कैसे चिह्नित करते हैं। वीएस मूल रूप से कह रहा है, "ऐसा लग रहा है कि यह शायद एक परीक्षण परियोजना है, इसलिए मैं बस आगे बढ़ने जा रहा हूं और आपके लिए इसे चिह्नित करूंगा।" या व्लादिमीर के उत्तर में वर्णित परियोजना प्रकार को जोड़ें।
गांगेय

2
विजुअल स्टूडियो 2017 (संस्करण 15.x) के साथ, यह समस्या आई और चली गई। इतिहास के लिए इस धागे को देखें । इस सूत्र में यह भी उल्लेख है कि यह आखिरकार विजुअल स्टूडियो 15.7
संरचित

35

व्यक्तिगत रूप से मुझे यह पसंद नहीं है कि यह परियोजना मेरे प्रोजेक्ट फाइलों में शामिल हो गई है और मुझे लगता है कि यह उचित समाधान के बजाय वर्कअराउंड की तरह है। अपने परीक्षण परियोजनाओं रूप में चिह्नित करते तो परीक्षण परियोजनाओं मेरे लिए अधिक सही लगता है और यह पहली करने के लिए इस जोड़कर प्राप्त किया जा सकता PropertyGroup:

<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<TestProjectType>UnitTest</TestProjectType>

{3AC096D0-A1C2-E12C-1390-A8335801FDAB}टेस्ट प्रोजेक्ट और {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}सी # का मतलब है । अन्य प्रोजेक्ट प्रकार के लिए यहां छापे जाते हैं


11
^ मैं ProjectTypeGuidsभी पसंद करता हूं, लेकिन यदि आप क्रॉस-प्लेटफॉर्म डेवलपमेंट कर रहे हैं और मोनो-डिवेलप का उपयोग कर रहे हैं, तो आप {3AC096D0-A1C2-E12C-1390-A8335801FDAB}प्रोजेक्ट नहीं खोल पाएंगे : "यह प्रोजेक्ट प्रकार मोनोडेवल द्वारा समर्थित नहीं है"। यदि आप केवल टेस्ट प्रोजेक्ट प्रकार GUID को निकालते हैं, तो दोनों IDE खुश लगते हैं।
व्यान्डब

3
मुझे आश्चर्य है कि <TestProjectType> के लिए अन्य संभावित प्रकार क्या हैं? इसके बारे में कोई जानकारी नहीं मिल सकी।
जे पोलाक

12

जाने-माने / निरंतर GUIDs के बारे में अच्छी बात यह है कि वे बहुत अधिक अद्वितीय हैं और इसलिए Google में खोजना बहुत आसान है। जो मैंने किया, और पाया: यह और यह , साथ ही साथ अन्य दिलचस्प हिट।
ऐसा लगता है कि यह वास्तव में टी 4 डीएसएल टूल में एक ज्ञात बग है जो एसडीके के साथ आता है। और सौभाग्य से कुछ रजिस्ट्री कुंजियों को बदलकर हल करना काफी आसान है।


8
और अब जब मैं इसे खोजता हूं तो मुझे यह SO प्रश्न ;-) मिलता है।
binki

बस स्पष्ट होने के लिए, टी 4 डीएसएल बग यह था कि सेवा टैग बी 4 एफ 97281-0DBD-4835-9ED8-7DFB966E87FF को सभी परियोजनाओं में जोड़ा जा रहा था, भले ही वे टी 4 का उपयोग न करें। उस बग को Visual Studio 2008 में ठीक किया गया था। एक सेवा टैग अभी भी उन प्रोजेक्ट्स में जोड़ा गया है जो T4 का उपयोग करते हैं (हालाँकि GUID अलग है)। यह अभी भी VS2017 के मामले में है।
duncanp
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.