2013-04-17 12 views
8

Ich habe ein Entity-Framework-Projekt, das auf meinem Computer funktioniert, aber fällt, wenn aus dem Netzwerk ausgeführt. Jüngste Änderungen des Projekts gehören das Hinzufügen des Dynamic Linq dll (System.Linq.Dynamic)Entity Framework-Typ Initialisierer Ausnahme

Wenn ich es aus dem Netzwerk debuggen, VS berichtet: The type initializer for 'System.Data.Entity.Internal.AppConfig' threw an exception

Die innere Ausnahme ist: „Die Datei oder Assembly laden 'EntityFramework, Version = 4.4.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089' oder eine seiner Abhängigkeiten. Die Manifestdefinition der gefundenen Assembly stimmt nicht mit der Assemblyreferenz überein. (Ausnahme von HRESULT: 0x80131040) ":" EntityFramework, Version = 4.4 .0.0, Kultur = neutral, PublicKeyToken = b77a5c561934e089 "}

Ich habe die üblichen Tricks probiert: Entfernen des packages Verzeichnisses von der Roo t des Projekts, Deinstallation und Neuinstallation von der Paket-Manager-Konsole, aber ohne Erfolg.

Mein 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> 

jemand kann darauf hinweisen, was ich falsch gemacht habe?

+0

Wenn Sie sagen "aber fällt aus, wenn aus dem Netzwerk ausgeführt" meinen Sie, der Code läuft auf einer anderen Maschine. Wahrscheinlich hat der Code, egal wo Sie ihn ausführen, nicht die Entity Framework 5.0 dll.Überprüfen Sie den Behälter auf der "Remote" Maschine und sehen Sie, ob es da ist. – cgotberg

+0

Ja, zu einer anderen Maschine. Aber ich habe alle dlls (und ein paar verwandte xmls) in diesem Verzeichnis. Alles funktioniert bis heute, und das einzige echte neue Zeug, dem ich es vorwerfen kann, ist dynamisch linq – mcalex

Antwort

20

In Ihrer App.config-Datei ist Entity Framework 5.0 aufgeführt, und einige Projekte in Ihrem Code halten immer noch an EF 4.4 fest und erwarten, dass es in der App.config-Datei gefunden wird.

Folgendes ist am wahrscheinlichsten passiert: Sie haben EF 5.0 für ein Projekt installiert, das in .NET 4.0 erstellt wurde, wodurch die Version von EF 4.4 statt 5.0 (seit 5.0 ist nur für .NET 4.5) erstellt wird. Wenn Sie später versuchen, das Projekt auf .NET 4.5 hochzufahren, haben Sie immer noch EF 4.4 für dieses Projekt. Das würde erfordern, dass Sie erneut EF für dieses Projekt neu installieren, um den richtigen Verweis auf EF 5.0 zu haben.

Geben Sie das eine Chance und lassen Sie mich wissen, ob es funktioniert.

+0

Nicht genau sicher, was ich gebe eine Chance, aber, ich habe versucht, EF zu deinstallieren und neu installieren mit Nuget. Die Deinstallation schien zu funktionieren, aber bei der Neuinstallation von Nuget sagte das Projekt bereits einen Verweis auf EF 5, aber ich werde nicht zulassen, dass Agin deinstalliert wird. Eine SO-Antwort sagte, mit der nugget-Befehlszeile zu versuchen, zu installieren, also tat ich das, und es gab eine erfolgreiche Installation msg, aber dann folgte das mit dem gleichen: Projekt hat bereits eine EF-Referenz Typ Nachricht. – mcalex

+0

Sie müssen Entity Framework manuell aus den Referenzen im Projekt löschen und anschließend EF neu installieren. – IronMan84

+0

Ja, es war das - oder so ähnlich - ich bin mir immer noch nicht sicher. Endlich habe ich alles rausgezogen und wieder richtig reingelegt (glaube ich). Nun müssen die Jungs von Systems dot net 4.5 einsetzen. Hoppla. :-) – mcalex

10

Alle Projekt haben richtige Version von EF installiert haben und dann überprüfen Sie die folgenden in der Datei App.config,

  1. Stellen Sie sicher, connection Element nach dem Element configSections ist.
  2. Stellen Sie sicher, Start Element ist nach dem connectionStrings Element.

<?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

Ich habe versucht, alle, danach hat gerade das folgende entfernt g providers, es hat für mich funktioniert

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

Ich habe mein Projekt mit EF6 gestartet, brauchte aber ein Rollback auf EF5. Der Abschnitt "Anbieter" ist in EF5 nicht verfügbar, daher wurde mein Problem behoben. Vielen Dank. – MarceloBarbosa

Verwandte Themen