2012-10-15 11 views
5

मैं अक्सर स्थिति देखता हूं जब असेंबली संदर्भों में हिंटपाथ गलत होता है और इससे अजीब यादृच्छिक विफलताओं का कारण बन सकता है।MSBuild HintPath प्रमाणीकरण को लागू करता है

उदाहरण के लिए, आपके पास गलत हिंटपाथ है, लेकिन आपके पास अपने जीएसी में एक समान असेंबली है। इसका मतलब यह होगा कि परियोजना आपकी मशीन पर ठीक संकलित होगी लेकिन दूसरों पर असफल हो जाएगी।

मेरे मामले में यह विपरीत है, सीआई सर्वर पर भी जीएसी में एक लाइब्रेरी है, इसलिए यह समस्या निरंतर एकीकरण द्वारा पता लगाने योग्य नहीं होगी।

मैं कस्टम MSBuild कार्य की तरह कुछ ढूंढ रहा हूं जो सभी हिंटपाथ को मान्य करेगा और उनमें से कोई भी गलत होने पर निर्माण विफलता का कारण बन जाएगा।

उत्तर

0

यदि आप निर्माण पथ को अमान्य करते हैं तो निर्माण में असफल होना चाहते हैं, तो क्यों न केवल कुछ स्पष्ट रूप से संदर्भित करें? यह एक ही पुस्तकालय के बहुत सारे संस्करण होने के कारण मेरी कंपनी में एसओपी है।

उदाहरण के लिए:

<Reference Include="C:\Path\To\Library\MyReference.dll"> 
     <Private>False</Private> 
    </Reference> 

या, यदि आप कुछ पथ के आधार पर लाइब्रेरियों को संदर्भित करने गतिशील चाहते हैं, आप कुछ MSBuild संपत्ति सेट कर सकते हैं, जैसे कि, "ExternalLibs" है कि अपने पुस्तकालयों फ़ोल्डर को इंगित करता है (यदि आप रखना स्रोत नियंत्रण में libs, आदि)। फिर आप उस प्रॉपर्टी को कमांड लाइन (जब आप msbuild कहते हैं) के माध्यम से सेट कर सकते हैं या इसे कुछ डिफ़ॉल्ट मान दे सकते हैं कि प्रत्येक उपयोगकर्ता अपनी .user फ़ाइलों में ओवरराइड कर सकता है, उदाहरण के लिए।

<Reference Include="$(ExternalLibs)\MyReference.dll"> 
     <Private>False</Private> 
    </Reference> 

यह समाधान बहुत लचीला है।