Ich habe eine vollständige Anwendung von ASP.NET Core 1.0, die mit net461
-Referenzen ausgeführt wird. Jetzt versuche ich, ein weiteres Framework hinzuzufügen - netcoreapp1.0
. Dafür habe ich mein project.json folgendermaßen aktualisiert:
{
"userSecretsId":"",
"version":"2.4.0-*",
"buildOptions":{
"emitEntryPoint":true,
"preserveCompilationContext":true
},
"dependencies":{
"Microsoft.ApplicationInsights.AspNetCore":"1.0.0",
"Microsoft.AspNetCore.Authentication.Cookies":"1.0.0",
"Microsoft.AspNetCore.Diagnostics":"1.0.0",
"Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore":"1.0.0",
"Microsoft.AspNetCore.Identity":"1.0.0",
"Microsoft.AspNetCore.Identity.EntityFrameworkCore":"1.0.0",
"Microsoft.AspNetCore.Mvc":"1.0.0",
"Microsoft.AspNetCore.Mvc.TagHelpers":"1.0.0",
"Microsoft.AspNetCore.Server.IISIntegration":"1.0.0",
"Microsoft.AspNetCore.Server.Kestrel":"1.0.0",
"Microsoft.AspNetCore.StaticFiles":"1.0.0",
"Microsoft.EntityFrameworkCore":"1.0.0",
"Microsoft.EntityFrameworkCore.SqlServer":"1.0.0",
"Microsoft.Extensions.Configuration.CommandLine":"1.0.0",
"Microsoft.Extensions.Configuration.FileExtensions":"1.0.0",
"Microsoft.Extensions.Configuration.Json":"1.0.0",
"Microsoft.Extensions.Configuration.UserSecrets":"1.0.0",
"Microsoft.Extensions.Logging":"1.0.0",
"Microsoft.Extensions.Logging.Console":"1.0.0",
"Microsoft.Extensions.Logging.Debug":"1.0.0",
"Microsoft.VisualStudio.Web.BrowserLink.Loader":"14.0.0",
"Microsoft.VisualStudio.Web.CodeGenerators.Mvc":"1.0.0-preview2-final"
},
"tools":{
"BundlerMinifier.Core":"2.0.238",
"Microsoft.AspNetCore.Razor.Tools":"1.0.0-preview2-final",
"Microsoft.AspNetCore.Server.IISIntegration.Tools":"1.0.0-preview2-final",
"Microsoft.Extensions.SecretManager.Tools":"1.0.0-preview2-final"
},
"commands":{
"ef":"EntityFramework.Commands",
"web":"Microsoft.AspNetCore.Server.Kestrel"
},
"frameworks":{
"net461":{
},
"netcoreapp1.0":{
"imports":[
"dotnet5.6",
"portable-net45+win8"
]
}
},
"runtimes":{
"win10-x64":{
},
"win81-x64":{
},
"win8-x64":{
},
"win7-x64":{
}
},
"publishOptions":{
"exclude":[
"**.user",
"**.vspscc",
"wwwroot",
"node_modules"
]
},
"scripts":{
"prepublish":[
"npm install",
"bower install",
"gulp clean",
"gulp min"
]
}
}
Nach dem Ändern von project.json erhielt ich diesen Fehler:
Das folgende Projekt konnte nicht ausgeführt werden: MVC6_Full_Version (.NETCoreApp, Version = v1.0) Ursache: Die erwartete coreclr-Bibliothek wurde nicht gefunden im Paketdiagramm. Bitte führen Sie dotnet restore erneut aus.
Um dies zu beheben, habe ich dotnet restore
Befehl ausgeführt, aber kein Glück.
Dann fügte ich diesen Block hinzu:
"Microsoft.NETCore.App": {
"version": "1.0.0",
"type": "platform"
},
Nach dem Hinzufügen dieses Blocks habe ich einen anderen Fehler erhalten:
Code: NU1002 Beschreibung: Die Abhängigkeit Microsoft.NETCore.App 1.0.0 unterstützt nicht das Framework .NETFramework, Version = v4.6.1.
Grundsätzlich möchte ich in meinen Anwendungen beide Verweise hinzufügen - .NET Framework 4.6.1 und ASP.NET Core 1.0.
Wie löse ich diesen Fehler?
Es ist auf jeden Fall möglich, ASP.NET Core-Projekte mit .NET Framework oder .NET Core zu erstellen. Sie sind wirklich nahe dran - nur ein paar Änderungen erforderlich:
runtimes
, sofern Sie nicht beabsichtigen, native Kompilierungen durchzuführen (etwas ungewöhnlich).Microsoft.NETCore.App
in einer dependencies
-Sektion innerhalb von der netcoreapp1.0
-Sektion. Ich habe die folgende Änderung getestet und es wird ohne Fehler wiederhergestellt und kompiliert:project.json
...
"frameworks": {
"net461": {
},
"netcoreapp1.0": {
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0"
}
},
"imports": [
"dotnet5.6",
"portable-net45+win8"
]
}
}
Die Microsoft.NETCore.App
-Abhängigkeit ist nur für .NET Core erforderlich. Wenn Sie sie hier hinzufügen, wird sichergestellt, dass sie verfügbar ist, wenn Sie dieses Framework erstellen.
Auch der Abschnitt commands
ist veraltet und kann entfernt werden.
Ich habe auf die .net-Kernklassenbibliothek in .net 4.6.1 verwiesen, indem ich Folgendes geändert habe.
Bevor ich diese Fehlermeldung erhielt, als ich versuchte, auf den .net-Core von .net 4.6.1 zu verweisen
Fix:
Original
{
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.0",
"type": "platform"
},
"Interop.SHDocVw.dll": "1.1.0",
"Microsoft.mshtml.dll": "7.0.3300.1"
},
"frameworks": {
//"net461": {},
"netcoreapp1.0": {
"imports": [
"dotnet5.6",
"portable-net45+win8",
"net461"
]
}
},
"scripts": {
"prepublish": [ "bower install", "dotnet bundle" ]
}
}
Korrigiert
{
"dependencies": {
"Interop.SHDocVw.dll": "1.1.0",
"Microsoft.mshtml.dll": "7.0.3300.1"
},
"frameworks": {
"net461": {
},
"netcoreapp1.0": {
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0"
}
},
"imports": [
"dotnet5.6",
"portable-net45+win8",
"net461"
]
}
},
"scripts": {
"prepublish": [ "bower install", "dotnet bundle" ]
}
}