2013-04-17 10 views
8

मेरे पास एक इकाई फ्रेमवर्क प्रोजेक्ट है जो मेरी मशीन पर ठीक काम कर रहा है, लेकिन नेटवर्क से चलाने पर गिरता है। परियोजना में हाल के परिवर्तन गतिशील Linq dll (System.Linq.Dynamic)इकाई फ्रेमवर्क प्रकार प्रारंभकर्ता अपवाद

जोड़ने शामिल जब मैंने इसे नेटवर्क से डिबग, वी.एस. रिपोर्ट: The type initializer for 'System.Data.Entity.Internal.AppConfig' threw an exception

भीतरी अपवाद नहीं है: "फ़ाइल या विधानसभा लोड नहीं कर सका 'EntityFramework, संस्करण = 4.4.0.0, संस्कृति = तटस्थ, PublicKeyToken = b77a5c561934e089' या इसकी निर्भरताओं में से एक। स्थित असेंबली की स्पष्ट परिभाषा असेंबली संदर्भ से मेल नहीं खाती है। (HRESULT: 0x80131040 से अपवाद) ":" EntityFramework, Version = 4.4 .0.0, संस्कृति = तटस्थ, PublicKeyToken = b77a5c561934e089 "}

मैंने सामान्य चाल की कोशिश की है: roo से packages निर्देशिका को हटा रहा है प्रोजेक्ट का टी, पैकेज मैनेजर कंसोल से अनइंस्टॉल करना और पुनर्स्थापित करना, लेकिन इसका कोई फायदा नहीं हुआ।

मेरे app.config:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> 
     <section name="LGFinance.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
    </sectionGroup> 
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> 
    </configSections> 
    <connectionStrings> 
    <add name="LGFinanceEntities" connectionString="metadata=res://*/Model.LGFinanceContext.csdl|res://*/Model.LGFinanceContext.ssdl|res://*/Model.LGFinanceContext.msl;provider=System.Data.SqlClient; provider connection string='data source=lightning;initial catalog=DLGDB;Integrated Security=true;Password=******;multipleactiveresultsets=True;App=EntityFramework'" providerName="System.Data.EntityClient" /> 
    </connectionStrings> 
    <entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> 
    </entityFramework> 
    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 
    </startup> 
    <applicationSettings> 
    <LGFinance.Properties.Settings> 
     <setting name="Setting" serializeAs="String"> 
     <value /> 
     </setting> 
    </LGFinance.Properties.Settings> 
    </applicationSettings> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Windows.Interactivity" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
</configuration> 

किसी का कहना है सकते हैं कि मैं गलत क्या किया है?

+0

जब आप कहते हैं "नेटवर्क से चलाने पर गिरता है" तो क्या आपका मतलब है कि कोड किसी अन्य मशीन पर चल रहा है। सबसे अधिक संभावना है कि जहां भी आप कोड चला रहे हों, में इकाई ढांचे 5.0 डीएल नहीं है।"रिमोट" मशीन पर बिन की जांच करें और देखें कि यह वहां है या नहीं। – cgotberg

+0

हाँ, दूसरी मशीन पर। लेकिन मेरे पास उस निर्देशिका में स्थित सभी डीएलएस (और कुछ संबंधित एक्सएमएल) हैं। क्या आज तक सभी काम कर रहे हैं, और एकमात्र असली नई चीजें जिन्हें मैं इसे दोष दे सकता हूं वह गतिशील linq – mcalex

उत्तर

20

आपकी App.config फ़ाइल में एंटीटी फ्रेमवर्क 5.0 सूचीबद्ध है, और आपके कोड में कुछ प्रोजेक्ट अभी भी ईएफ 4.4 पर है और इसे App.config फ़ाइल में ढूंढने की उम्मीद है।

यहां सबसे अधिक संभावना है: आपने .NET 4.0 में निर्माण की गई एक परियोजना पर ईएफ 5.0 स्थापित किया है, जो 5.0 के बजाय ईएफ 4.4 का संस्करण बनाता है (क्योंकि 5.0 केवल .NET 4.5 के लिए है)। यदि आपने बाद में .NET 4.5 पर प्रोजेक्ट को अपनाने का प्रयास किया है तो उस परियोजना पर आपके पास अभी भी EF 4.4 होगा। ईएफ 5.0 के सही संदर्भ के लिए उस परियोजना पर फिर से ईएफ को फिर से स्थापित करने की आवश्यकता होगी।

इसे एक शॉट दें और यह काम करता है तो मुझे बताएं।

+0

बिल्कुल सही नहीं है कि मैं एक शॉट दे रहा हूं, लेकिन, मैंने Nuget का उपयोग करके ईएफ को अनइंस्टॉल करने और पुनर्स्थापित करने का प्रयास किया है। अनइंस्टॉल काम करने लग रहा था, लेकिन Nuget को पुनर्स्थापित करने पर कहा गया कि परियोजना पहले से ही ईएफ 5 का संदर्भ था, लेकिन मुझे एगिन को अनइंस्टॉल करने नहीं देगा। एक एसओ उत्तर ने स्थापित करने के लिए nuget कमांड लाइन के साथ प्रयास करने के लिए कहा, इसलिए मैंने ऐसा किया, और यह एक सफल इंस्टॉल संदेश दिया, लेकिन उसके बाद उसका पालन किया: परियोजना में पहले से ही एक ईएफ संदर्भ प्रकार संदेश है। – mcalex

+0

आपको प्रोजेक्ट में संदर्भों से इकाई फ्रेमवर्क मैन्युअल रूप से हटाने की आवश्यकता होगी, फिर EF को पुनर्स्थापित करें। – IronMan84

+0

हाँ, यह वह था - या ऐसा कुछ - मुझे अभी भी यकीन नहीं है। अंत में यह सब बाहर खींच लिया और फिर से ठीक से वापस डाल दिया (मुझे लगता है)। अब सिस्टम लोगों को डॉट नेट 4.5 तैनात करना होगा। उफ़। :-) – mcalex

10

सभी परियोजना, एफई का सही संस्करण पहले स्थापित करने की और उसके बाद App.config फ़ाइल में निम्नलिखित की जाँच

  1. यकीन ConnectionStrings तत्व configSections तत्व के बाद है की है।
  2. सुनिश्चित करें कि स्टार्टअप तत्व कनेक्शन के बाद है तत्व।

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
     <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.3.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
    </configSections> 
    <connectionStrings> 
     <add name="SchedulingContext" connectionString="Data Source=XXX\SQL2008R2DEV;Initial Catalog=YYY;Persist Security Info=True;User ID=sa;Password=XXX" providerName="System.Data.SqlClient"/> 
    </connectionStrings> 
    <startup> 
     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 
    </startup>  
</configuration> 
4

मैंने कोशिश की सब, उसके बाद बस फॉलोइन हटा दिया जी प्रदाताओं, यह मेरे लिए काम किया

<providers> 
    <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> 
</providers> 
+1

मैंने अपनी परियोजना ईएफ 6 के साथ शुरू की लेकिन ईएफ 5 के लिए आवश्यक रोलबैक। अनुभाग "प्रदाता" ईएफ 5 में उपलब्ध नहीं हैं इसलिए इस मुद्दे को ठीक करने के लिए। धन्यवाद। – MarceloBarbosa

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