2012-11-27 5 views
6

मेरे पास एक कंसोल ऐप सी # प्रोजेक्ट है जो एनएचबेर्नेट 3.3.2 और शापआर्क.NHibernate 2.0.4.628 पर निर्भर करता है जिसे एनएचबीरनेट 3.3.1 के साथ संकलित किया गया है। (जहां तक ​​मुझे पता है - मैं गलत हो सकता हूं, लेकिन जब मैंने 2.0.4 शार्प आर्च प्रोजेक्ट बनाया तो उसने Nuget के माध्यम से एनएच 3.3.1 डाउनलोड किया)।दृश्य स्टूडियो में प्रदर्शित डीएल संस्करण। संदर्भित डीएलएल फ़ाइल/उत्पाद संस्करणों को प्रतिबिंबित नहीं करते

विज़ुअल स्टूडियो एनएचबीर्नेट को संस्करण 3.3.1.4000 के रूप में क्यों दिखाता है जब संदर्भित डीएल 3.3.2.4000 है? विशिष्ट संस्करण गुण सभी संदर्भों के लिए गलत पर सेट है। और SharpArch का संस्करण 2.0.4 के बजाय वीएस 2.0.0.0 में प्रकट होता है जो फ़ाइल/उत्पाद संस्करण है।

एप्लिकेशन config में मेरे पास है:

System.IO.FileLoadException was unhandled 
    Message=Could not load file or assembly 'NHibernate, Version=3.3.2.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) 
    Source=MyApp.ResourcesGenerator 
    FileName=NHibernate, Version=3.3.2.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4 
    FusionLog="" 
    StackTrace: 
     at MyApp.ResourcesGenerator.Program.InitializeNHibernateSession() 
     at SharpArch.NHibernate.NHibernateInitializer.InitializeNHibernateOnce(Action initMethod) in d:\Builds\SharpArch2\Solutions\SharpArch.NHibernate\NHibernateInitializer.cs:line 54 
     at MyApp.ResourcesGenerator.Program.Initialize() in C:\projects\tc\Trunk\Source_LibsUpgrade\Applications\PerformanceManagement\MyApp.ResourcesGenerator\Program.cs:line 149 
     at MyApp.ResourcesGenerator.Program.Main(String[] args) in C:\projects\tc\Trunk\Source_LibsUpgrade\Applications\PerformanceManagement\MyApp.ResourcesGenerator\Program.cs:line 31 
     at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) 
     at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 
     at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) 
     at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
     at System.Threading.ThreadHelper.ThreadStart() 
    InnerException: System.IO.FileLoadException 
     Message=Could not load file or assembly 'NHibernate, Version=3.3.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) 
     FileName=NHibernate, Version=3.3.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4 

मैं भी यकीन है कि क्यों यह 3.3.0.4000 लोड करने के लिए जब तेज वास्तुकला किया गया है कोशिश कर रहा है नहीं कर रहा हूँ:

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <dependentAssembly> 
     <assemblyIdentity name="NHibernate" publicKeyToken="aa95f207798dfdb4" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-3.3.1.4000" newVersion="3.3.2.4000" /> 
    </dependentAssembly> 
    </assemblyBinding> 
</runtime> 

अनुप्रयोग के साथ लोड करने के लिए विफल रहता है 3.3.1 के साथ संकलित।

उत्तर

11

NHibernate 3.3.2.GA 3.3.2.4000 के फ़ाइल संस्करण है लेकिन विधानसभा संस्करण अभी भी 3.3.1.4000 है। यह बाध्यकारी रीडायरेक्ट की आवश्यकता के बिना NHibernate के अपग्रेड की अनुमति देने के लिए किया गया था। NHibernate के सभी भविष्य के मामूली संस्करण उन्नयन भी इस पैटर्न का पालन करेंगे।

तो आपके लिए समाधान बाध्यकारी रीडायरेक्ट को हटाने के लिए है।

यहां भ्रमित करने वाला हिस्सा यह है कि विंडोज एक्सप्लोरर केवल फ़ाइल और उत्पाद संस्करण दिखाता है लेकिन विजुअल स्टूडियो केवल असेंबली संस्करण दिखाता है।

+3

कोई इच्छा किसी व्यक्ति की संपत्ति सूची में फ़ाइल संस्करण दिखाने के लिए वीएस एक्सटेंशन बनायेगी। –

+0

अब के लिए मैं हमेशा .NET परावर्तक का उपयोग करता हूं जो हमेशा मुझे संस्करण के साथ-साथ डीएलएस के संस्करणों को दिखाता है जो डीएल निर्भर करता है – costa

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