2016-06-21 58 views
1

我试图将这些模型分成自己的项目,以便在使用新的.net核心类库的xamarin跨平台应用程序中使用。我被呈现的问题是:ASP.NET Core RC2为跨平台项目分开模型

Error image

我的解决方案结构如下:

Solution structure image

我的类库project.json如下:

{ 
    "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" 
     ] 
    } 
    } 
} 

我正在引用Web应用程序中的类库,但我不确定是否将模型pro perly或不。我试着找到一个解决方案,但是因为ASP.NET Core框架还很新,所以没有太多关于如何将模型分解到它自己的项目中的文档或指导。我希望有人能提供一些关于如何实现这一目标的指导。

编辑

这里是我的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%" ] 
    } 
} 

enter image description here

提前任何帮助感谢。

+0

可能与问题无关,但为什么你在地图库中有'.netcoreapp1.0'?此目标框架名词对象(TFM)仅供应用程序使用,不应在类库中使用 – Tseng

+0

它修复了Resharper智能感知错误http://stackoverflow.com/a/37617711/3603938 –

+0

而且如果您希望跨平台平台删除引用到.NET Framework 4.5.1 在您的project.json中,删除行“net451”:{}, –

回答

0

我发现解决方案很奇怪,这是一个不应该成为问题的命名空间问题。我确信底层ASP.NET核心RC2框架中存在一个错误,尽管我可能是错的?

当我将类库中的ApplicationUser的名称空间从'Climbing.Web.Models'更改为'Climbing.Domain'时,会出现问题 - 这将是正确的名称空间。一旦我将其更改回'Climbing.Web.Models'命名空间,问题就解决了。

编辑: 深入了一会儿,发现我没有更新ApplicationUser被引用的视图中的命名空间。通过更新导入来解决此问题。

+0

视图在运行时编译,以便可以解释它。他们删除了rc1或rc2中的视图预编译,直到他们找到一个新的位置放入它 – Tseng

0

解决方案中的单个项目不总是有你需要的所有参考,你可以像这样手动添加它们。

  • 右键单击项目标题。
  • 转到添加 - >附图 Screen cap
  • 围棋大会(也许基于COM的依赖),然后选择所需的依赖Screen Cap
+0

我不太明白你的答案。我不认为我错过了任何依赖? –

+0

您可能正在使用“使用”关键字,这并不意味着VS会像您期望的那样导入它,特别是在解决方案中创建新项目时。至少根据我的经验,不到一个月前我遇到了一个类似的问题,正是在这个过程中解决了这个问题。 –

+0

似乎的解决方案是将ApplicationUser的名称空间从类库更改回原来的名称空间 - 奇数。 –

0

这听起来好像你没有从你的web项目正确的参考到类项目(或者,你缺少一个using声明

要从Web项目中引用一类项目,更新您的Web项目的project.json和依赖类似以下内容:

"dependencies": { 
    "Climing.Domain": { 
     "version": "1.0.0-*", 
     "target": "project" 
    }, 
} 
+0

不幸的是你的答案没有奏效。我已经将Web应用程序'project.json'包含在我对模型项目的引用中。我绝对不会错过任何“使用”语句,因为编译器很高兴并且项目会建立并运行。 –

+0

啊,刚才看到你的回答下面有关视图中不正确的命名空间,是有道理的! – Sock