Gå til innhold

Oppgradert EntityFramework til 6.1.1 og nå feiler alt :-(


Anbefalte innlegg

FOlkens..

 

Jeg oppgraderte EntityFramework i vår solution nå til EF6. Nå kjører ikek programmene våre lenger. Får denne:

 

Could not load file or assembly 'EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

 

Jeg har prøvd alt jeg kommer på. Jeg har brukt NUGET Management for hele solutionen og fjernet alle spor av gammel versjon. Nå ser jeg kun EF6. Alikevel så feiler det.

 

Hjelp hjelp hjelp

Lenke til kommentar
Videoannonse
Annonse

Kan kanskje være at noen assemblies ditt prosjekt er avhengig av, er avhengig av EF 4.4?

 

Kan være verdt å prøve Assembly Binding Log Viewer:

 

The Assembly Binding Log Viewer displays details for assembly binds. This information helps you diagnose why the .NET Framework cannot locate an assembly at run time. These failures are usually the result of an assembly deployed to the wrong location, a native image that is no longer valid, or a mismatch in version numbers or cultures.

 

Ellers kan du også bruke noe som .NET Reflector eller CheckAsm til å sjekke hva som er avhengig av hva.

Endret av ahw_
Lenke til kommentar

Ja, det ser sånn ut. Åpnet dette i Reflector og ser følgende:
// Assembly Reference EntityFramework

Version: 4.4.0.0

Name: EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=<stort tall>

 

Så ja, helt klart. Noe merkelig skjer her. Jeg har jo rekompillert alt dette i i prosjektet under references så er det EF6 så står. Dette er jo helt sykt.

 

Kanskje jeg skal avinstallere hele EntityFramework og se om jeg får lagt det inn på nytt...

Lenke til kommentar

Ja, det ser sånn ut. Åpnet dette i Reflector og ser følgende:

// Assembly Reference EntityFramework

Version: 4.4.0.0

Name: EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=<stort tall>

 

Så ja, helt klart. Noe merkelig skjer her. Jeg har jo rekompillert alt dette i i prosjektet under references så er det EF6 så står. Dette er jo helt sykt.

 

Kanskje jeg skal avinstallere hele EntityFramework og se om jeg får lagt det inn på nytt...

UHM! Dette var rart. Når jeg går videre med Reflector så går den til dette:

 

// Assembly EntityFramework, Version 6.0.0.0

Location: C:\Data\Dev\Build\Debug\EntityFramework.dll Name: EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Type: Library

Endret av HDSoftware
Lenke til kommentar

Jada, og de finnes i massevis. Jeg har nå gjort følgende: Har fjernet alt som heter EntityFramework i Packages mappa. Går så igjennom alle app.config og packages.config og fjerner alt som har med EF der også. Så kjører jeg en kompilering og legger inn igjen EF på de prosjektene som krever det. For håpe dette skaper et kjørbart produkt

Lenke til kommentar

Du kan også prøve å legge inn "assemblyBinding" i app.config-fila.

<configuration>
  <runtime>
    <assemblyBinding>
      <dependentAssembly>
        <assemblyIdentity name="<DLL NAVN>" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

Slik jeg har sett dette i våre prosjekter så sier dette at for alle som ber om å bruke <DLL NAVN> fra versjon 0.0.0.0 til 3.0.0.0 så er det versjon 3.0.0.0 som skal brukes.

Da vil prosjektet ditt kun ha én versjon av DLLen, og andre DLLer som er avhengig av andre versjoner vil bli omdirigert til den nyeste versjonen (f.eks. i ditt tilfelle at noen ber om versjon 4.4.0.0 og blir omdirigert til 6.0.0.0). Dette vil selvfølgelig kunne skape problemer hvis mye faktisk er fjernet fra den gamle men Microsoft pleier å være flinke til å være bakoverkompatible.

 

"publicKeyToken" er jeg ikke helt sikker på hva blir brukt til. Jeg ser den er den samme på mange av våre assemblyBindings så det virker som det ikke er helt nødvendig å ha riktige tegn i det feltet. For sikkerhetsskyld kan du sikkert bruke den publicKeyToken som står i post #5.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...