2015-06-02 9 views
19

मैंने वीएस2015 आरसी में एक सी # परीक्षण परियोजना बनाई है। स्थानीय स्तर पर यह बनाता है, लेकिन यह त्रुटियों के साथ विफल रहता है जब मैं हमारे सीआई बिल्ड सर्वर (TeamCity) पर निर्माण करने का प्रयास:संदर्भ Microsoft.VisualStudio.QualityTools.UnitTestFramework सीआई बिल्ड

UnitTest1.cs (2,17): त्रुटि CS0234: प्रकार या नाम स्थान नाम 'VisualStudio' करता है नामस्थान 'माइक्रोसॉफ्ट' में मौजूद नहीं है (क्या आप असेंबली संदर्भ गायब हैं?) [डी: \ BuildAgent \ work \ e486bf18e454d0c2 \ dh.PSP.Coordinator.Api.Tests \ dh.PSP.MetadataService.Api.Tests.csproj ] यूनिटटेस्ट 1.cs (9,10): त्रुटि CS0246: प्रकार या नामस्थान नाम 'TestMethod' नहीं मिला (क्या आप एक उपयोग निर्देश या असेंबली संदर्भ खो रहे हैं?) [D: \ BuildAgent \ work \ e486bf18e454d0c2 \ dh.PSP.Coordinator.Api.Tests \ dh.PSP .MetadataService.Api.Tests.csproj] यूनिटटेस्ट 1.cs (9,10): त्रुटि CS0246: प्रकार या नामस्थान नाम 'TestMethodAttribute' नहीं मिला (क्या आप निर्देश या एक असेंबली संदर्भ का उपयोग कर रहे हैं?) [डी: \ BuildAgent \ work \ e486bf18e454d0c2 \ dh.PSP.Coordinator.Api.Tests \ dh.PSP.MetadataService.Api.Tests.csproj] यूनिटटेस्ट 1.cs (6,6): त्रुटि CS0246: प्रकार या नामस्थान नाम 'टेस्ट क्लास' नहीं मिला (क्या आप एक प्रयोग निर्देश या एक असेंबली संदर्भ खो रहे हैं?) [डी: \ BuildAgent \ work \ e486bf18e454d0c2 \ dh.PSP.Coordinator.Api.Tests \ dh.PSP.MetadataService.Api .Tests.csproj] यूनिटटेस्ट 1.cs (6,6): त्रुटि CS0246: प्रकार या नामस्थान नाम 'TestClassAttribute' नहीं मिला (क्या आप मिस्सी हैं एनजी एक निर्देश या एक विधानसभा संदर्भ का उपयोग) [डी: \ BuildAgent \ काम \ e486bf18e454d0c2 \ dh.PSP.Coordinator.Api.Tests \ dh.PSP.MetadataService.Api.Tests.csproj]?

स्पष्ट रूप से ऐसा इसलिए है क्योंकि इन नेमस्पेस (माइक्रोसॉफ्ट.विज़ुअल स्टूडियो.क्यूटीटूल। यूनिटटेस्टफ्रेमवर्क) युक्त असेंबली बिल्ड सर्वर पर नहीं है, मेरी स्थानीय मशीन पर यह सी: \ प्रोग्राम फ़ाइलें (x86) \ माइक्रोसॉफ्ट विजुअल स्टूडियो 12.0 \ Common7 \ IDE \ PublicAssemblies \ Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll। मुझे लगता है कि मैं असेंबली को अपने समाधान में कॉपी कर सकता हूं ताकि यह कोडबेस का हिस्सा बन जाए लेकिन मैन्युअल रूप से चलती फ़ाइलों को एक सुरुचिपूर्ण हैक की तरह लगता है। मैं nuget पर चारों ओर खोज की है और http://www.nuget.org/packages/Microsoft.VisualStudio.QualityTools.UnitTestFramework/ जो मैं चाल करना होगा लगा पाया है, लेकिन है कि पैकेज के साथ विफल इंस्टॉल करना:

स्थापित-पैकेज: पैकेज स्थापित नहीं हो सका 'Microsoft.VisualStudio.QualityTools.UnitTestFramework 11.0.50727.1' । आप एक परियोजना है कि लक्षित करता '.NETFramework, संस्करण = v4.5.2' में इस पैकेज स्थापित करने के लिए कोशिश कर रहे हैं, लेकिन पैकेज किसी भी विधानसभा संदर्भ या सामग्री फ़ाइलों कि कि ढांचे

के साथ संगत कर रहे हैं शामिल नहीं है

इसे हल करने का मेरा सबसे अच्छा विकल्प क्या है? मुझे आश्चर्य है कि वीएस2015 में एक टेस्ट प्रोजेक्ट बनाने में मेरी सभी निर्भरताओं को स्वचालित रूप से शामिल नहीं किया गया है, हालांकि शायद मैं मूर्ख हूं (मैं एक नवाचारी डॉट नेटटर का कुछ हूं)।

+3

पृथ्वी पर क्यों कोई इसे चिह्नित करेगा? यह एक बिल्कुल वैध सवाल है। मैं एक अनुभवहीन नेट डेवलपर हूं, जो कुछ भी समय गुजर रहा है और कहीं भी नहीं जा रहा है, प्रगति के तरीके के बारे में कुछ मार्गदर्शन की तलाश में है। क्या इतना इतना elitist है कि मुझे ऐसा करने की अनुमति नहीं है? गंभीरता से? – jamiet

+0

@ जैमियेट मुझे एक ही समस्या थी, आपके टीमसिटी एजेंट पर क्या आप लिनक्स पर मोनो के तहत निर्माण कर रहे हैं? मोनो उस पुस्तकालय को इसके वितरण के हिस्से के रूप में प्रदान नहीं करता है। यदि यह विंडोज के तहत .NET है, तो आपके पास इसे प्राप्त करने के लिए कुछ विकल्प हैं। – TylerY86

उत्तर

2

हम्म मैं कुछ विचार है, तो एक ही है कि सबसे अच्छा अपनी आवश्यकताओं फिट बैठता है चुनें

  1. एक साधारण जवाब स्थानीय कॉपी और समाधान के एक ही फ़ोल्डर में सभाओं की तरह एक फ़ोल्डर का उपयोग करने के लिए DLL चिह्नित किया जाना चाहिए और संदर्भ "माइक्रोसॉफ्ट। विज़ुअल स्टूडियो। क्वालिटीटूल। यूनिटटेस्टफ्रेमवर्क।dll "
  2. अपने निर्माण सर्वर में दृश्य स्टूडियो स्थापित करें। ध्वनि पागल लेकिन यह निकटतम करने के लिए" डेवलपर मशीन "है कि आप।
  3. तो DLL in the GAC स्थापित करें आप इस के साथ परेशान करने के लिए नहीं है।
  4. फिक्स NuGet पैकेज (.NET Framework संस्करण के लिए संदर्भ जोड़ना) और इसका उपयोग करें।
  5. अपने .NET Framework संस्करण को डाउनग्रेड करें ताकि आप NuGet पैकेज का उपयोग कर सकें।
  6. अपना स्वयं का NuGet सर्वर बनाएं! (और संदर्भ का संदर्भ जोड़ें आपको आवश्यक डीएलएल)

आईएमएचओ मैं पहला जवाब चुनूंगा, क्योंकि यह आपके सभी पैकेज समस्याओं को हल करने के लिए NuGet का उपयोग करने का "सबसे अच्छा तरीका" प्रतीत होता है लेकिन आप एक डीएलएल का उपयोग कर रहे हैं जिसे आप नहीं जानते कि इसे भरोसा किया जाना चाहिए या नहीं।

सी, या सी ++ जैसी "पुरानी" भाषाओं में उपयोग की जाने वाली प्रणाली में आप स्रोत कोड डाउनलोड करते हैं और कोड चलाने के लिए आवश्यक पुस्तकालयों को डाउनलोड करते हैं, इसलिए मुझे नहीं लगता कि NuGet पैकेज यह सबसे अच्छा समाधान है।

पहले विकल्प का उपयोग करना आपके पास हमेशा एक ही संस्करण है और फ़ाइल के MD5 को देख सकता है और पता है कि आपके बिल्ड सर्वर में क्या चल रहा है।

शायद असली सबसे अच्छा विकल्प 6 होना चाहिए। जब ​​आप अपने डीएलएल को अपने लाइव और अधिक भयानक और भरोसेमंद बनाने के लिए अपने स्वयं के NuGet सर्वर का उपयोग करते हैं।

+2

या आप xunit, nunit का उपयोग कर उस डरावनी से बचें ... माइक्रोसॉफ्ट से कुछ भी नहीं। – Sam

+0

मैं इस परियोजना में दो परियोजनाओं में आया हूं जो मेरे पास हैं जो वास्तव में एनयूनीट का उपयोग करते हैं लेकिन कुछ संदर्भ परीक्षण परियोजनाओं के साथ आए थे। मुझे तब तक एहसास नहीं हुआ जब तक कि मैंने उन्हें हमारी टीमसिटी प्रणाली में नहीं छोड़ा। –

2

उत्तर eng.augusto's answer में विकल्प 1 के समान है।
माइक्रोसॉफ्ट Microsoft.VisualStudio.QualityTools.UnitTestFramework, के नवीनतम संस्करण के लिए NuGet प्रदान नहीं करता है, लेकिन दृश्य स्टूडियो (normally at सी के एक भाग के रूप में की आपूर्ति: \ Program Files (x86) \ माइक्रोसॉफ्ट विजुअल स्टूडियो \ 2017 \ एंटरप्राइज \ Common7 \ IDE \ PublicAssemblies \ Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll)

मैं अपने समाधान का एक सबफ़ोल्डर के रूप में फ़ोल्डर Microsoft.VisualStudio.QualityTools बनाया है और की नकल की

Microsoft.VisualStudio.QualityTools.UnitTestFramework। डीएल माइक्रोसॉफ्ट। विज़ुअल स्टूडियो। क्वालिटीटूल। यूनीटटेस्टफ्रेमवर्क.एक्सएमएल

फ़ाइलों को स्रोत नियंत्रण में जोड़ा जाना चाहिए (भले ही डीएलएल को अनदेखा किया जाता हो)।
फिर मैंने एक नए स्थान के संदर्भ में अपने test.csproj में संदर्भ बदल दिए।

+0

यह सच नहीं है। मेरा जवाब देखें – notlkk

+0

@notlkk: आपका उत्तर कहां है?मैंने इसे देखा, लेकिन अब यह गायब हो गया। –

0

वीएस 2017 में बनाई गई परियोजनाओं के लिए। Nuget पैकेज को जोड़ना Microsoft.VisualStudio.QualityTools.UnitTestFramework.Updated बिल्ड सर्वर पर स्थापित वीएस के बिना सीआई पर यूनिट परीक्षण परियोजनाओं को बनाने की अनुमति देता है।

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