2011-02-02 10 views
13

मैं जब मैं (संकलन समय पर नहीं) मेरी अनुप्रयोग चलाने के इस त्रुटि हो रही है:एक विशिष्ट निर्भरता के विशिष्ट संस्करण पर निर्भर करता है कि कैसे ढूंढें?

फ़ाइल या विधानसभा 'Castle.Windsor, संस्करण = 2.1.0.0, संस्कृति = तटस्थ लोड नहीं कर सका, PublicKeyToken = 407dd0808d44fbdc 'या इसकी निर्भरताओं में से एक। स्थित असेंबली की स्पष्ट परिभाषा असेंबली संदर्भ से मेल नहीं खाती है। (HRESULT से अपवाद: 0x80131040)

मेरे समाधान कई परियोजनाओं, परियोजना संदर्भ जहां संभव का उपयोग करते हुए है, लेकिन उन परियोजनाओं में से कुछ विधानसभा बाहरी निर्भरता के लिए संदर्भ की है।

मैं आसानी से यह पता कैसे लगा सकता हूं कि कौन सा प्रोजेक्ट Castle.Windsor.dll के इस विशिष्ट संस्करण की तलाश में है? मेरे पास वह संस्करण नहीं है और मैं 2.5.2 (नवीनतम) का उपयोग करने की कोशिश कर रहा हूं, इसलिए मैं अपराधी को ढूंढना चाहता हूं और इसे नवीनतम उपयोग करने के लिए अपडेट करना चाहता हूं।

अग्रिम में बहुत धन्यवाद।

अद्यतन
मैं एक स्वच्छ फ्यूजन लॉग नीचे जोड़ दिया है। ऐसा लगता है कि Caliburn.Castle को Castle.Windsor, Version=2.1.0.0 की आवश्यकता है (जो एक गलती होगी क्योंकि मैं 2.5 का उपयोग कर रहा हूं), लेकिन फ़्यूज़न असेंबली जांच वास्तव में Castle.Windsor, Version=2.5.1.0 खोजने के रूप में जांच रही है।

क्या मुझे यह सही ढंग से समझा गया है?

=== Pre-bind state information === 
LOG: User = Barney\neil 
LOG: DisplayName = Castle.Windsor, Version=2.1.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc 
(Fully-specified) 
LOG: Appbase = file:///[Debug folder of my exe] 
LOG: Initial PrivatePath = NULL 
LOG: Dynamic Base = NULL 
LOG: Cache Base = NULL 
LOG: AppName = [Filename of my exe] 
Calling assembly : Caliburn.Castle, Version=1.1.0.0, Culture=neutral, PublicKeyToken=8e5891231f2ed21f. 
=== 
LOG: This bind starts in default load context. 
LOG: Using application configuration file: [Config file for my exe] 
LOG: Using host configuration file: 
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config. 
LOG: Post-policy reference: Castle.Windsor, Version=2.1.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc 
LOG: GAC Lookup was unsuccessful. 
LOG: Attempting download of new URL file:///[Debug folder of my exe]/Castle.Windsor.DLL. 
LOG: Assembly download was successful. Attempting setup of file: [Debug folder of my exe]\Castle.Windsor.dll 
LOG: Entering run-from-source setup phase. 
LOG: Assembly Name is: Castle.Windsor, Version=2.5.1.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc 
WRN: Comparing the assembly name resulted in the mismatch: Minor Version 
ERR: The assembly reference did not match the assembly definition found. 
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated. 
+0

आप सही हैं, Castle.Windsor का एक नया संस्करण पाया जा रहा है, लेकिन Caliburn.Castle एक पुराना संस्करण चाहता है। – Pedro

+0

@ पेड्रो हाँ, मैंने तब से Caliburn.Castle.dll को देखने के लिए परावर्तक का उपयोग किया है, और पाया है कि इसे 2.1. Castlesor.dll (मुझे स्रोत से पुनर्निर्माण के बावजूद) की आवश्यकता है। मेरे पास Caliburn.Castle.dll को एक अद्यतन कैसल के साथ बनाने और फिर से प्रयास करने के लिए एक और जाना होगा। :) –

उत्तर

9

आप Fuslogvw.exe utility का उपयोग कर सकते हैं जो आपको कॉलिंग असेंबली पर अधिक जानकारी प्रदान करेगा। स्कॉट हंसलेमेन भी blogged about it

1

क्या आपने असेंबली बाध्यकारी लॉग व्यूअर (Fuslogvw.exe) देखा है?

यह आवश्यक सभी जानकारी प्रदान करना चाहिए।

MSDN पर देखें।

1

FusionLog tool ऐसी चीजों के लिए सबसे अच्छा उपकरण है, लेकिन कभी-कभी केवल आपके कोड को इंगित करेगा। MSBuild के लिए वर्बोजिटी को चालू करने का प्रयास करें और आप इसे ट्रैक करने में सक्षम हो सकते हैं जहां संकलन विफल होने पर होता है।

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