c# - "Questo assembly è costruito da un runtime più recente rispetto al runtime attualmente caricato e non può essere caricato"





dll .net-4.0 .net-2.0 (10)


cambiare la directory INSTALL_UTIL_HOME da "C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0" a "C: \ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319" per installare il servizio. Questo errore si verifica principalmente per la mancata corrispondenza della versione.

Sto ottenendo l'errore: "Questo assembly è costruito da un runtime più recente rispetto al runtime attualmente caricato e non può essere caricato."

Ho un progetto DLL 4.0 NET che viene chiamato da un progetto .NET 2.0. C'è un modo per riconciliare la differenza nel quadro?




È necessario aggiornare il progetto .NET 2 a .NET 4 oppure eseguire il downgrade del progetto .NET 4 su .NET 3.5 (o versioni precedenti).

Come si aggiorna la versione .net? Non sono sicuro di dove e cosa specificare. Per favore aiuto.

Edit: ho trovato la risposta me stesso. Seleziona il progetto, fai clic con il tasto destro e scegli Pagine delle proprietà. Qui puoi selezionare la versione del framework. oppure selezionare il progetto e fare clic su Maiusc + F4




L'errore era dovuto al modo in cui ho configurato il pool di applicazioni in IIS.

Il mio servizio web utilizza uno strumento applicativo configurato per v2.0.50727. Ciò ha provocato il messaggio di errore.

Quando l'ho modificato in v4.0.30319, non ho ricevuto l'errore.




Ho ricevuto anche questo errore, ma il mio problema era che stavo usando una versione precedente di GACUTIL.EXE .

Una volta che ho avuto il corretto GACUTIL per l'ultima versione di .NET installata, ha funzionato bene.

L'errore è fuorviante perché fa sembrare che sia la DLL che stai cercando di registrare in modo errato.




Questo errore può anche essere attivato avendo la versione di framework .NET errata selezionata come predefinita in IIS.

Fare clic sul nodo radice sotto la vista Connessioni (sul lato sinistro), quindi selezionare Cambia versione di .NET Framework dalla vista Azioni (sul lato destro), quindi selezionare la versione .NET appropriata dall'elenco a discesa.




Se hai già provato tutte le altre soluzioni logiche in questa pagina, controlla due volte. Nel mio app.config avevo un riferimento a un vecchio framework.

<startup>
  <supportedRuntime version="v2.0.50727"/>
</startup>

avrebbe dovuto essere

<startup>
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>

La scheda del progetto mostrava correttamente la v4.0 ma l'app.config non era impegnata nel nostro repository con quella modifica. Per risolvere il problema, ho cambiato il framework in qualcos'altro e di nuovo in 4.0, che ha aggiornato il mio file app.config.




Poiché solo una versione del runtime può essere caricata in un processo (sebbene, come altri hanno fatto riferimento, il caricamento all'indietro - 4.0 caricamento 2.0 - sia corretto), hai alcune opzioni:

  • Aggiorna il progetto .Net 2.0
  • Avvia il progetto .Net 2.0 (se la fonte non è tua)
  • Downgrade del progetto .Net 4.0
  • Carica il progetto .Net 4.0 nel suo processo (credo che funzioni, ma richiederà un po 'di sforzo, IMO)



Ho ricevuto lo stesso messaggio di errore. Stavo dando

C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ InstallUtil.exe "C: \ MyService \ MyService.exe"

Invece di

C: \ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319 \ InstallUtil.exe "C: \ MyService \ MyService.exe"




La sua versione .misura la corrispondenza della dll, quindi prova a cambiare da in app.config o web.config. Generalmente hanno un Framework più alto di quello inferiore perché quando aggiungiamo la DLL del sistema alla versione precedente dell'applicazione .net creata in modo che non funzioni, basta cambiare alla versione superiore




A seconda della versione del framework che stai target, potresti voler guardare qui per ottenere la stringa corretta:

http://msdn.microsoft.com/en-us/library/ee517334.aspx

Ho sprecato ore cercando di capire perché la mia versione di target .Net 4.0 client richiedesse la versione completa. L'ho usato alla fine:

<startup useLegacyV2RuntimeActivationPolicy="true">
  <supportedRuntime version="v4.0.30319" 
               sku=".NETFramework,Version=v4.0,Profile=Client" />
</startup>






c# dll .net-4.0 .net-2.0