2013-09-04 4 views
138

सी # समाधान में, मैंने एक मौजूदा प्रोजेक्ट जोड़ा।एक csproj फ़ाइल में "सेवा शामिल" क्या है?

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

क्या इस के लिए है:
उसके बाद, विजुअल स्टूडियो अन्य .csproj फ़ाइलों में निम्नलिखित प्रविष्टि जोड़ा गया है?
क्या मैं इसे हटा सकता हूं?

+0

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

उत्तर

203

मैं एक ऐसी ही मामले में, जहां इस जोड़ दिया गया था:

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

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

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

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

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

+3

क्या यह अभी भी वीएस 15.3+ के लिए उपयोगी है? –

+4

@JaanusVarus हाँ, यह अभी भी वी.एस. 15.4 में होता है (मैं व्यवहार को समझने की कोशिश कर रहा था और उस ने मुझे यहाँ नेतृत्व में)। मुझे यकीन नहीं है कि प्रदर्शन निर्णय का पुनरीक्षण किया जाना चाहिए, अगर वह आपका प्रश्न था। –

10

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

+4

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

+2

हालांकि यह लिंक प्रश्न का उत्तर दे सकता है, लेकिन यहां उत्तर के आवश्यक हिस्सों को शामिल करना बेहतर है और संदर्भ के लिए लिंक प्रदान करना बेहतर है। लिंक किए गए पृष्ठ में परिवर्तन होने पर लिंक-केवल उत्तर अमान्य हो सकते हैं। - [समीक्षा से] (/ समीक्षा/कम गुणवत्ता वाली पोस्ट/19034 9 60) –

23

व्यक्तिगत रूप से मुझे यह प्रोजेक्ट फाइलों में यह सेवा पसंद नहीं है और मुझे लगता है कि यह उचित समाधान के बजाय एक समाधान की तरह है। तो अपने परीक्षण परियोजनाओं अंकन परीक्षण परियोजनाओं के रूप में मेरे लिए अधिक सही लगता है और यह पहली 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} - सी #। अन्य परियोजना प्रकार GUIDs के लिए जाना here

+7

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

+2

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

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