2011-03-13 16 views
10

से सी #। डीएल संदर्भ बदलना मैंने अपनी परियोजना संकलित की है और मेरे कुछ प्रोजेक्ट के जोड़े गए हैं। डीएलएस के पूर्ण संदर्भ हैं। जब मैं अपनी प्रोजेक्ट को किसी अन्य मशीन पर चलाने की कोशिश करता हूं, तो यह मूल प्रोजेक्ट पथ से .dlls को देखता है।पूर्ण से संबंधित

मैं परियोजना को सापेक्ष पथ का उपयोग कर .dlls के लिए कैसे देख सकता हूं?

+0

AFAIK, जब आप dll के लिये परम पथ निर्दिष्ट है, यह एक में अनुवाद किया जाता है प्रोजेक्ट फ़ाइल में सापेक्ष पथ, इसलिए अन्य मशीनों पर सापेक्ष पथ का उपयोग किया जाता है ... –

+0

किसी अन्य ड्राइव पर संग्रहीत असेंबली को संदर्भित करने से बचें। –

उत्तर

16

.csproj फ़ाइल संपादित करें और <HintPath> तत्वों को पूर्ण पथ से संबंधित पथ तक बदलें।

+1

जब मैं डीएलएल संदर्भ जोड़ रहा था, मैंने देखा कि यह स्वचालित रूप से सापेक्ष पथ का उपयोग करता है। विजुअल स्टूडियो ने किस तरह से पूर्ण पथ का उपयोग किया है? –

+7

यह पूर्ण पथ का उपयोग करता है जब आप जिस असेंबली का संदर्भ दे रहे हैं वह परियोजना की जड़ से ऊपर है। – Loophole

4

आप असेंबली को हल करने के लिए अपना हैंडलर भी लिख सकते हैं। सरलतम रूप में यह कुछ ऐसा दिखाई देगा:

AppDomain.CurrentDomain.AssemblyResolve += AssemblyResolveHandler; 
.. 
static Assembly AssemblyResolveHandler(object sender, ResolveEventArgs args) 
{ 
    string assemblyPath = "yourpath"; 
    return Assembly.LoadFrom(assemblyPath + args.Name); 
} 

एक अन्य विकल्प App.config में प्रवेश जोड़ रहा है:

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <probing privatePath="yourpath"/> 
    </assemblyBinding> 
    </runtime> 
संबंधित मुद्दे