2010-11-24 12 views
5

मैं वर्तमान में सी # के साथ काम कर रहा हूं और कुछ सिल्वरलाइट अनुप्रयोगों का विकास कर रहा हूं जो डेटा स्रोत के रूप में शेयरपॉइंट वेब सेवाओं का उपयोग करते हैं।विजुअल स्टूडियो (सी #) में संकलन समय पर मूल्य निर्धारित करना?

शेयरपॉइंट व्यवस्थापक ने निर्णय लिया कि उपयोगकर्ताओं को "अलग" करने के लिए, उन्हें एक ही शेयरपॉइंट सूची कई बार बनाना था, और प्रत्येक शाखा से उपयोगकर्ताओं को उस शाखा के लिए इसी सूची तक पहुंच प्रदान करना था।

इससे समस्या उत्पन्न होती है क्योंकि मुझे प्रत्येक शाखा के लिए शेयरपॉइंट सूचियों के लिए ग्रिड सेट करना होगा, और उसी एप्लिकेशन के 5 अलग-अलग संस्करणों को संकलित करना होगा।

आखिरकार मैंने सूचीप्रॉपर्टीज कक्षा बनाने का निर्णय लिया, और वर्तमान शाखा का नाम किसी विधि में पास कर दिया ताकि वह सही मार्गदर्शिका लौटा सके।

तो अब, मैं एक चर (शाखा) स्थापित करने के लिए "शाखा-ए", संकलन और एप्लिकेशन के पास "AppBranchA.xap" नाम बदलें। फिर प्रत्येक शाखा के लिए वही करें।

क्या संकलन समय पर एक स्ट्रिंग पास करने का कोई तरीका है और चर (और उम्मीद है कि ऐप नाम भी) स्वचालित रूप से बदल गया है?

मैं एक साथ कई बिल्डों को प्रबंधित करने के अन्य तरीकों को सुनने के लिए तैयार हूं।

धन्यवाद,

उत्तर

2

एक तरीका यह दृष्टिकोण जो GUID मूल्य शाखा विशिष्ट गुणों के सेट के लिए प्रयोग किया जाता है को नियंत्रित करने के एक सशर्त संकलन प्रतीक का उपयोग करने के लिए है। उदाहरण

class ListProperties { 

#if BRANCH-A 
    public static readonly GUID BranchGuid = "Guid #1"; 
#endif 

#if BRANCH-B 
    public static readonly GUID BranchGuid = "Guid #2"; 
#endif 

} 

के लिए यह आपको कमांड लाइन पर परिभाषित पूर्व प्रोसेसर प्रतीकों को बदलने के द्वारा शाखा परिभाषाओं के मूल्य नियंत्रित करने के लिए अनुमति देता है।

एक और विकल्प शाखा विशिष्ट डेटा को स्टोर करने के लिए कॉन्फ़िगरेशन फ़ाइल का उपयोग करना होगा। फिर आप एक बार एप्लिकेशन बना सकते हैं और लक्ष्य शाखा के आधार पर विभिन्न कॉन्फ़िगरेशन फ़ाइलों के साथ इसे तैनात कर सकते हैं।

2

यदि आप प्रीकंपाइल निर्देशों का उपयोग करते हैं, तो आप इसे प्राप्त कर सकते हैं।

#if BRANCH_A 
readonly Guid myId = new Guid("some guid"); 
#endif 

#if BRANCH_B 
readonly Guid myId = new Guid("some other guid"); 
#endif 

तुम सच में फैंसी प्राप्त करना चाहता था, तो आप भी नया बना सकते हैं बनाता है (न कि सिर्फ डिबग और रिलीज की तुलना में)। फिर आपके पास उस निर्माण के लिए परिभाषित आपके संबंधित निर्देश हैं।

+0

यह संकलित नहीं करता है। 'GUID'' const' सदस्य नहीं हो सकता है और स्ट्रिंग अक्षर निश्चित रूप से 'GUID' – JaredPar

+0

@JaredPar निश्चित रूप से परिवर्तनीय नहीं हैं। यह अभी भी बिंदु पार हो जाता है। – scottm

3

आप VS 2010

प्रयोग कर रहे हैं मान लिया जाये कि आप config transforms साथ संयोजन के रूप में शाखा नाम के साथ Build configurations उपयोग कर सकते हैं मान बदलने के लिए। तो आपको बस प्रत्येक कॉन्फ़िगरेशन में बनाना होगा।

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