Sto cercando di separare i modelli nel loro progetto da utilizzare in un'applicazione cross-platform xamarin utilizzando la nuova libreria di classi core .net. Il problema che mi viene presentato è:
La mia struttura della soluzione è la seguente:
La mia libreria di classi project.json è la seguente:
{
"version": "1.0.0-*",
"dependencies": {
"NETStandard.Library": "1.5.0-rc2-24027",
"Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.0.0-rc2-final"
},
"frameworks": {
"net451": { },
"netstandard1.5": {
"imports": [
"dnxcore50",
"portable-net452+win81"
]
},
".netcoreapp1.0": {
"imports": [
"dnxcore50",
"portable-net45+win8"
]
}
}
}
Sto facendo riferimento alla libreria di classi nell'applicazione web, ma non sono sicuro se ho separato i modelli correttamente o meno. Ho cercato di trovare una soluzione, ma poiché il framework ASP.NET Core è ancora molto nuovo non c'è molta documentazione o indicazioni su come separare i modelli nel proprio progetto. Spero che qualcuno possa fornire alcune indicazioni su come raggiungere questo obiettivo.
MODIFICARE
Ecco la mia applicazione web project.json:
{
"userSecretsId": "aspnet-Climbing.Web-d856be17-9b54-401e-98b2-4d6589fc7ff3",
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.0-rc2-3002702",
"type": "platform"
},
"Microsoft.ApplicationInsights.AspNetCore": "1.0.0-rc2-final",
"Microsoft.AspNetCore.Authentication.Cookies": "1.0.0-rc2-final",
"Microsoft.AspNetCore.Diagnostics": "1.0.0-rc2-final",
"Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore": "1.0.0-rc2-final",
"Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.0.0-rc2-final",
"Microsoft.AspNetCore.Mvc": "1.0.0-rc2-final",
"Microsoft.AspNetCore.Razor.Tools": {
"version": "1.0.0-preview1-final",
"type": "build"
},
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0-rc2-final",
"Microsoft.AspNetCore.Server.Kestrel": "1.0.0-rc2-final",
"Microsoft.AspNetCore.StaticFiles": "1.0.0-rc2-final",
"Microsoft.EntityFrameworkCore.SqlServer": "1.0.0-rc2-final",
"Microsoft.EntityFrameworkCore.Tools": {
"version": "1.0.0-preview1-final",
"type": "build"
},
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0-rc2-final",
"Microsoft.Extensions.Configuration.Json": "1.0.0-rc2-final",
"Microsoft.Extensions.Configuration.UserSecrets": "1.0.0-rc2-final",
"Microsoft.Extensions.Logging": "1.0.0-rc2-final",
"Microsoft.Extensions.Logging.Console": "1.0.0-rc2-final",
"Microsoft.Extensions.Logging.Debug": "1.0.0-rc2-final",
"Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-rc2-final",
"Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
"version": "1.0.0-preview1-final",
"type": "build"
},
"Microsoft.VisualStudio.Web.CodeGenerators.Mvc": {
"version": "1.0.0-preview1-final",
"type": "build"
},
"Microsoft.AspNetCore.Identity": "1.0.0-rc2-final",
"Climbing.Domain": "1.0.0"
},
"tools": {
"Microsoft.AspNetCore.Razor.Tools": {
"version": "1.0.0-preview1-final",
"imports": "portable-net45+win8+dnxcore50"
},
"Microsoft.AspNetCore.Server.IISIntegration.Tools": {
"version": "1.0.0-preview1-final",
"imports": "portable-net45+win8+dnxcore50"
},
"Microsoft.EntityFrameworkCore.Tools": {
"version": "1.0.0-preview1-final",
"imports": [
"portable-net45+win8+dnxcore50",
"portable-net45+win8"
]
},
"Microsoft.Extensions.SecretManager.Tools": {
"version": "1.0.0-preview1-final",
"imports": "portable-net45+win8+dnxcore50"
},
"Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
"version": "1.0.0-preview1-final",
"imports": [
"portable-net45+win8+dnxcore50",
"portable-net45+win8"
]
}
},
"frameworks": {
"netcoreapp1.0": {
"dependencies": {
},
"imports": [
"dotnet5.6",
"dnxcore50",
"portable-net45+win8"
]
}
},
"buildOptions": {
"emitEntryPoint": true,
"preserveCompilationContext": true
},
"runtimeOptions": {
"gcServer": true
},
"publishOptions": {
"include": [
"wwwroot",
"Views",
"appsettings.json",
"web.config"
]
},
"scripts": {
"prepublish": [ "npm install", "bower install", "gulp clean", "gulp min" ],
"postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
}
}
Grazie in anticipo per qualsiasi aiuto.
Ho trovato la soluzione stranamente un problema di namespace che non dovrebbe essere un problema. Sono convinto che ci sia un bug da qualche parte nel framework Core RC2 di base di ASP.NET, anche se potrei sbagliarmi?
Il problema sorge quando cambio lo spazio dei nomi di ApplicationUser nella libreria di classi da 'Climbing.Web.Models' a 'Climbing.Domain' - Quale sarebbe il namespace corretto. Una volta che ho cambiato questo spazio dei nomi 'Climbing.Web.Models' il problema è stato risolto.
Modifica: Dive un po 'più in profondità e ho realizzato che non avevo aggiornato gli spazi dei nomi nelle viste in cui è stato fatto riferimento a ApplicationUser. Risolto questo problema aggiornando le importazioni.
Sembra che tu non abbia il riferimento corretto dal tuo progetto web al tuo progetto di classe (o in alternativa, ti manca un'istruzione using
.
Per fare riferimento a un progetto di classe dal tuo progetto web, aggiorna project.json
del tuo progetto web e una dipendenza simile alla seguente:
"dependencies": {
"Climing.Domain": {
"version": "1.0.0-*",
"target": "project"
},
}