2012-09-28 15 views
6

के लिए फील्ड मानों को मजबूर करना मैं विरासत बग ट्रैकिंग सिस्टम से सभी दोषों को पढ़ने और उन्हें TFS (2008/2010) में आयात करने के लिए उपयोगिता लिख ​​रहा हूं। मैं नए वर्कइटम बनाने के लिए टीएफएस एपीआई का उपयोग कर रहा हूं, अपने फ़ील्ड सेट कर सकता हूं, और फिर उन्हें सहेज सकता हूं। हालांकि मैं "द्वारा निर्मित" और "बनाई गई तिथि" फ़ील्ड को संशोधित करने में असमर्थ हूं, क्योंकि ये सिस्टम द्वारा सेट किए गए हैं।प्रोग्रामिंग रूप से एक TFS WorkItem

// these fail with "The value for the field 'Created By' cannot be changed." 
defectWorkItem.Fields["Created By"].Value = defect.Submitter; 
defectWorkItem.Fields["Created Date"].Value = defect.SubmitDate; 

जाहिर है अगर मैं इन निर्धारित नहीं कर सकते (और वहाँ अन्य क्षेत्रों जो भी मैं इस तरह के हैं कि सबमिट करने की स्थापना कोई है जो एक वैध TFS उपयोगकर्ता नहीं है होना करने के लिए के रूप में के लिए मूल्यों, मजबूर करने के लिए सक्षम होने के लिए चाहते हैं कर रहे हैं) खेतों, मैं सभी विरासत कीड़े के साथ समाप्त हो जाऊंगा जैसे कि वे उसी व्यक्ति द्वारा उसी तारीख में बनाए गए थे।

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

उत्तर

7

आप Created Date और Created By क्षेत्रों सेट करने के लिए आप एक सेवा खाते हैं यदि अनुमति दी जाती है और आप अनदेखा करने के नियमों की सुविधा को चालू करें।

जब आप इस ध्वज का उपयोग करके WorkItemStore कक्षा का उदाहरण बनाते हैं तो आप नियमों को बाईपास करना चुन सकते हैं: WorkItemStoreFlags.BypassRules

कृपया ध्यान दें कि आपको केवल इन आइटमों को कार्य आइटमों के पहले संशोधन के लिए सेट करने की अनुमति है।

+0

धन्यवाद से उपयोग किए जाने वाले प्रश्नों का उपयोग नहीं कर सकते हैं, यह बिल्कुल ठीक लगता है मुझे जरूरत है। मैं इसे आज़माउंगा और उत्तर के रूप में इसे चिह्नित कर सकता हूं अगर मैं इसे –

+0

पर काम कर सकता हूं क्या आपको पता है कि यह ध्वज टीएफएस 2012 के साथ नया है या नहीं? यह पुस्तकालय के पिछले संस्करण में नहीं है। –

+0

मैं इसे आजमा रहा हूं और यह थोड़ा अजीब है। सबसे पहले, आप इन फ़ील्ड को पहले सेव पर सेट नहीं कर सकते हैं, केवल बाद में बचाता है। दूसरा, यह मुझे सिस्टम को बदलने नहीं देगा। तैयार है, भले ही मैं सिस्टम को बदल सकता हूं। CreatedDate और Microsoft.VSTS.Common.ActivatedDate इस तकनीक के साथ। जैसा कि आपने कहा था, –

1

बस एक सुझाव: एक काम मद के वर्णन के शुरू में इस पाठ जब पलायन सम्मिलित करें: 1/1 2012

  • मूल बनाया:

    • सिस्टम XXX से
    • मूल निर्माण तिथि माइग्रेट द्वारा: जॉन डो
  • +0

    हाँ, अगर मैं बनाई गई तिथियों को संशोधित नहीं कर सकता तो मैं यही करूँगा, लेकिन इसका मतलब यह होगा कि लोग पुराने सिस्टम –

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