tfs टीएफ बिल्ड की परिभाषा लक्ष्य और चल रहे यूनिट परीक्षणों के साथ बनाएँ




msbuild tfsbuild (2)

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

यह बिल्ड पैकेजिंग चरण के बिना कुछ समय के लिए चल रहा है। इसके परिणामस्वरूप एक सफल निर्माण भी हुआ जिसने यूनिट टेस्ट भी चलाया।

निम्न मार्गदर्शिका के आधार पर मैंने क्लाउड सेवाओं की पैकेजिंग को जोड़ दिया है: https://support.microsoft.com/en-us/documentation/articles/cloud-services-dotnet-continuous-delivery/ मूल रूप से यह बिल्ड परिभाषा में msbuild (/ target: Publish) के लिए प्रकाशित करने के लक्ष्य को सेट करने के लिए नीचे आता है।

समस्या यह है कि जब एक समाधान एक प्रकाशित लक्ष्य के साथ बनाया जाता है तो यूनिट टेस्ट प्रोजेक्ट्स का निर्माण नहीं किया जाता है। MSBuild निम्न संदेश के साथ वापस आ जाएगा: Skipping unpublishable project । मैंने इसे वापस सामान्य MSBuild लक्ष्य फ़ाइल में खोज लिया है I एक प्रोजेक्ट केवल तभी निर्मित होगा, जब प्रकाशन एक एक्सई में प्रोजेक्ट परिणाम होता है, जैसा कि यहां देखा जा सकता है: http://referencesource.microsoft.com/#MSBuildFiles/C/ProgramFiles(x86)/MSBuild/14.0/bin_/amd64/Microsoft .Common.CurrentVersion.targets, 217

मैंने जो कोशिश की है:

  • प्रकाशित बिल्डिंग में यूनिट टेस्ट प्रोजेक्ट्स के निर्माण को मजबूर करना मैंने निम्नलिखित एमएसबिल्ड को यूनिट टेस्ट csproj-files में प्रकाशित किया है ताकि प्रकाशन पर डिफ़ॉल्ट लक्ष्य ओवरराइड किया जा सके:
    <PropertyGroup>
      <PublishDependsOn>
         Build;
      </PublishDependsOn>
    </PropertyGroup>
    
  • कंसोल एप्लीकेशन के लिए यूनिट टेस्ट प्रोजेक्ट का आउटपुट प्रकार सेट करना

दोनों मामलों में MSBuild The specified project reference metadata for the reference "..\..csproj" is missing or has an invalid value: Project इकाई परीक्षण प्रोजेक्ट द्वारा संदर्भित सभी परियोजनाओं के लिए परियोजना।

मुझे लगता है कि मैं सही रास्ते पर नहीं हूं। क्या ऐसा कोई तरीका है जो मैं यूनिट टेस्ट परियोजनाओं का निर्माण कर सकता हूं और क्लाउड सर्विस परियोजनाओं का निर्माण और प्रकाशित कर सकता हूं?


ओकी, यह बहुत आसान था, फिर भी मैं यद्यपि।

MSBuild के /target -ग्राम कई लक्ष्य ले सकते हैं जो बदले में बनाए गए हैं। मैं /target:Build;Publish बनाने के लिए मेरी बिल्ड परिभाषा बदलता हूं /target:Build;Publish एमएसबिल्ड पैराम्स के रूप में /target:Build;Publish इस मुद्दे को तय किया


मुझे एक त्रुटि मिली (क्लाउड सेवा के लिए कोई प्रविष्टि बिंदु निर्दिष्ट नहीं है) /t:Build;Publish मेरी सेवा के साथ /t:Build;Publish इसलिए मैंने दो अलग-अलग कार्रवाइयां कीं, एक Build साथ और एक Publish और यह काम किया।