2012-02-27 14 views
6

आप इस तरह के त्रुटि संदेश को कैसे हल करते हैं?एफ # इंटरैक्टिव, डीएल संदर्भ पर एपीआई प्रतिबंध

`Binding session to 'C:\Program Files (x86)\NLog\.NET Framework 4.0\NLog.dll'... 

error FS0193: API restriction: The assembly 
'file:///C:\Program Files (x86)\NLog\.NET Framework 4.0\NLog.dll' has 
already loaded from a different location. It cannot be loaded from a 
new location within the same appdomain. 

कोड है कि यह चलाता है, इस प्रकार दिखाई देंगे:

#r @"..\packages\NLog.2.0.0.2000\lib\net20\NLog.dll" 
NLog.Config.SimpleConfigurator.ConfigureForConsoleLogging() 

उत्तर

8

ऐसा लगता है कि FSI दिए गए नाम के अलावा किसी अन्य द्वारा DLL से लोड नहीं होगा, इसलिए इस समस्या को हल होगा:

#I @"..\packages\NLog.2.0.0.2000\lib\net20" 
#r @"NLog.dll" 
NLog.Config.SimpleConfigurator.ConfigureForConsoleLogging() 

#I लोड पथ

करने के लिए कि फ़ोल्डर जोड़ने का मतलबका अर्थ डीएल-पथ द्वारा संदर्भित करना है; नाम पर ध्यान केंद्रित करना इसका अर्थ यह है कि एफएसआई पहले सिस्टम फ़ाइल का उपयोग करेगा, सिस्टम-व्यापी खोज पथ में देखेगा और केवल #r के बाद स्ट्रिंग का उपयोग निर्देशिका-संबंधित संकेत के रूप में करने का प्रयास करेगा।

तो इसे इस तरह से करके, आप सिस्टम-व्यापी के बजाय अपनी निर्दिष्ट निर्देशिका से एनएलओजी लोड बनाते हैं।

+2

मैं यह जवाब यहां जोड़ रहा हूं, क्योंकि मुझे गुगलिंग के दौरान यह नहीं मिला, इंटरैक्टिव को पुनः लोड करने में मदद नहीं मिली और मुझे जवाब के लिए अपना रास्ता अनुमान लगाया गया (जो काम करता था)। तो, गूगल, यहाँ कुछ चारा है। – Henrik

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