Comandi EntityFramework nel pacchetto della libreria di classi ASP.Net 5?

.net-core asp.net-core entity-framework-core

Domanda

Sto cercando di sviluppare la mia prima applicazione web ASP.Net e nella mia soluzione ho due progetti. Un'applicazione Web Application e una Class Library (Package) . Quando costruisco la versione di ASP.Net 4.5 di questa applicazione, inserisco le Entity Framework 6 in una libreria di classi, quindi lo sto facendo nella versione di ASP.Net 5 . Il problema è quando installo EntityFramework.Commands nella libreria di classi ottengo l'errore:

La dipendenza EntityFramework.Command 7.0.0-rc1-final in Project DBEntities non supporta framework .NetPlatform, Version = 5.4

La mia comprensione da questa domanda SO è che dotnet5.4 è il nuovo .Net 5 che dovrebbe essere supportato da EF7.

Ecco il mio file project.json :

{
  "version": "1.0.0-*",
  "description": "FFInfo.DAL Class Library",
  "authors": [ "Mathew" ],
  "tags": [ "" ],
  "projectUrl": "",
  "licenseUrl": "",
    "frameworks": {
        "dotnet5.4": {
            "dependencies": {
                "Microsoft.CSharp": "4.0.1-beta-23516",
                "System.Collections": "4.0.11-beta-23516",
                "System.Linq": "4.0.1-beta-23516",
                "System.Runtime": "4.0.21-beta-23516",
                "System.Threading": "4.0.11-beta-23516"
            }
        }
    },
    "dependencies": {
        "EntityFramework.Commands": "7.0.0-rc1-final",
        "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final"
    }
}

Ho installato il pacchetto sbagliato, EF7 è cambiato così tanto che sto costruendo la classe sbagliata, o mi manca qualcosa nel mio file JSON?

EDIT: nuovo project.json file basato su suggerimenti

{
    "version": "1.0.0-*",
    "description": "FFInfo.DAL Class Library",
    "authors": [ "Mathew" ],
    "tags": [ "" ],
    "projectUrl": "",
    "licenseUrl": "",
    "frameworks": {
        "dotnet5.4": {
            "dependencies": {
                "Microsoft.AspNet.Hosting.Abstractions": "1.0.0-*",
                "Microsoft.Dnx.Runtime": "1.0.0-*",
                "Microsoft.Extensions.CommandLineUtils.Sources": {
                    "version": "1.0.0-*",
                    "type": "build"
                },
                "Microsoft.Extensions.PlatformAbstractions": "1.0.0-*",
                "System.Console": "4.0.0-*",
                "System.IO.FileSystem": "4.0.1-*"
            }
        },
        "netcore50": {
            "bin": {
                "assembly": "lib\\netcore50\\_._"
            }
        },
        "dependencies": {
            "EntityFramework.Commands": "7.0.0-rc1-final",
            "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final"
        }
    }
}

Risposta accettata

Suppongo che la ragione del tuo problema sia di natura puramente tecnica. L'annuncio dichiara la ridenominazione di dnx451 in net451 e dnxcore50 in dotnet5.4, ma si consiglia di utilizzare tale rinomina solo per le librerie di classi (che pubblichete su NuGet per esempio per condividerle con altri). Se ho capito bene, tu sviluppi un'applicazione che usa le librerie di classi e quindi dovresti usare dnxcore50 invece di dotnet5.4 . Quindi è sufficiente rinominare la stringa "dotnet5.4" nella stringa "dnxcore50" in the file project.json` per risolvere il problema .

Indipendentemente dalla raccomandazione di cui sopra voglio aggiungere la mia comprensione del problema, perché si ottiene l'errore su EntityFramework.Command 7.0.0-rc1-final.

Capisco la ridenominazione dei framework come il passo verso i cambiamenti futuri che pianificano Microsoft. D'altra parte tutti i nomi dei quadri saranno interpretati come nomi diversi. Ti suggerisco di confrontare le informazioni sulle dipendenze visualizzate nella pagina https://www.nuget.org/packages/EntityFramework.Commands/7.0.0-rc1-final dalle informazioni corrispondenti da https: //www.nuget. org / packages / EntityFramework.MicrosoftSqlServer / 7.0.0-rc1-final . Le dipendenze di EntityFramework.MicrosoftSqlServer (che non hanno problemi con l'uso di dotnet5.4 ) sono simili all'immagine

inserisci la descrizione dell'immagine qui

Ho contrassegnato come letto la parte responsabile di dotnet5.4 . Dall'altro lato le dipendenze di EntityFramework.Commands come nell'immagine qui sotto:

inserisci la descrizione dell'immagine qui

dove non esiste una sezione ".NETPlatform 5.4" che corrisponde al nuovo nome dotnet5.4 .

Suppongo che sia un bug nella parte di project.json di EntityFramework.Commands :

"netcore50": {
  "bin": {
    "assembly": "lib\\netcore50\\_._"
  }
}

Suppongo che si debba cambiare netcore50 in dotnet5.4 nelle linee per supportare correttamente il nuovo nome framework dotnet5.4 . Un chould sostituisce il contenuto di "netcore50" alla copia da dnxcore50 (vedi le linee ):

"dotnet5.4": {
  "dependencies": {
    "Microsoft.AspNet.Hosting.Abstractions": "1.0.0-*",
    "Microsoft.Dnx.Runtime": "1.0.0-*",
    "Microsoft.Extensions.CommandLineUtils.Sources": {
      "version": "1.0.0-*",
      "type": "build"
    },
    "Microsoft.Extensions.PlatformAbstractions": "1.0.0-*",
    "System.Console": "4.0.0-*",
    "System.IO.FileSystem": "4.0.1-*"
  }
}

Probabilmente un evento dovrebbe aumentare alcuni numeri di versione delle DLL di cui sopra, ma non sarà ancora possibile utilizzare EntityFramework.Commands sotto "dotnet5.4" finché non verrà pubblicata la nuova versione fissa.

AGGIORNATO: ho posto il problema al team di sviluppo di EntityFramework. Includerò la risposta di Microsoft sul problema dopo averlo capito.



Related

Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché