【发布时间】:2016-12-09 20:17:13
【问题描述】:
我花了整整两天时间尝试为我的项目的数据库创建初始迁移。这太令人沮丧了。文档的每个预览版本都指向不同的方向,并且有很多未解决的问题在一段时间内徘徊。
我的项目是一个在完整框架 (net462) 上运行的 AspNetCore 应用程序,尽管我认为我已经尝试了预览版本的所有组合,甚至在这个问题上提出的解决方法:EF Tools 1.1.0-preview4 Unrecognized option '--config' 或在这个:https://github.com/aspnet/EntityFramework/issues/7083 但是都不行。
这是我的 project.json 的摘要以及相关部分:
{
"version": "1.0.0-*",
"buildOptions": {
"platform": "x86",
"debugType": "full",
"preserveCompilationContext": true,
"emitEntryPoint": true
},
"dependencies": {
....
"Microsoft.EntityFrameworkCore": "1.1.0",
"Microsoft.EntityFrameworkCore.Design": "1.1.0",
"Microsoft.EntityFrameworkCore.SqlServer": "1.1.0",
"Microsoft.EntityFrameworkCore.SqlServer.Design": "1.1.0",
....
},
"tools": {
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.1.0-preview4-final",
"Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4-final"
},
"frameworks": {
"net462": {
}
},
...
}
在我的情况下,建议的解决方法不起作用,既不使用夜间构建也不将工具降级到 1.0.0-preview3。
如果我使用 1.1.0-preview4-final 版本的工具,我会遇到这个错误:
Unrecognized option --config
如果我使用每晚构建,我会得到这个,这有点荒谬,因为我的应用只有一个项目,而不是 dll(它也有 emitEntryPoint:true 集)
Could not load assembly 'Sales'. Ensure it is referenced by the startup project 'Sales'
但这是我最喜欢的一个,当我降级到工具的 1.0.0-preview3-final 时,我得到了这个超现实的:
error: Package Microsoft.EntityFrameworkCore.Tools.DotNet 1.0.0-preview3-final is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0). Package Microsoft.EntityFrameworkCore.Tools.DotNet 1.0.0-preview3-final supports: netcoreapp1.0 (.NETCoreApp,Version=v1.0)
我不得不读了五遍,才能确定第二句话的意思与第一句话正好相反……这似乎是个笑话!
此外,无论我安装什么版本的工具,无论我是否恢复软件包以及是否重新启动计算机,命令都不再在 PMC 上运行......
我对这么多版本的所有东西都感到很疯狂,我只想创建一个迁移,我必须使用哪个版本的工具都没关系......现在有有效的配置还是我正在尝试不可能的事? 是否有人能够使用任何版本的 ef 工具在针对完整 .net 框架 (net462) 的 asp.net 核心应用程序中创建迁移?
如果是这样,怎么做?
编辑:
在将项目定位到 .netcoreapp1.0 并删除不兼容的引用后,现在我遇到了这个错误:
A fatal error was encountered. The library 'hostpolicy.dll' required to execute the application was not found in 'C:\Program Files (x86)\dotnet\shared\Microsoft.NETCore.App\1.0.1'
这里发生了什么???我真的厌倦了.net Core,它仍然是第一个版本。在它处于测试阶段时,我遇到了很多这样的问题,但现在事情应该是稳定的......他们已经改变了 20 次所有可以改变的东西,API、程序集名称、命名空间、包名称、约定。 .. 现在让我们等待工具的预览版 5、6 或 25,也许到 2035 年 EF Core 将拥有适当的工具和程序,同时我该死的一百万次我决定押注这项技术!
编辑 2:
根据 cmets global.json 可能是相关的:
{
"projects": [ "src", "test" ],
"sdk": {
"version": "1.0.0-preview2-1-003177"
}
}
并添加 1.0.0-preview2-1-003177 文件夹存在并且是 C:\Program Files (x86)\dotnet\sdk\ 和 C:\Program Files\dotnet\sdk\ 中唯一的一个
【问题讨论】:
-
有什么问题/异常/错误?
-
@Dmitry - 有足够的错误吗?
-
是和否 :) 您在项目文件夹中遇到了一些噩梦,需要更多细节来理解“为什么”。 1) 请出示您的
global.json文件。 2)修改框架后手动删除bin和obj子文件夹,重启VS,执行dotnet restore。通过这种方式,我的机器上的一些“奇怪”问题得到了解决 :) 无论如何,我在许多使用 EFCore 1.0.0 和 1.1.0、net46 和 netstardart1.3 以及 netcoreapp1.0 和 1.1 的项目中成功迁移(但从未尝试过 net462) .你能做一个小的非工作演示项目并将其推送到 github 上的某个地方吗? -
@Dmitry - 我已经删除了该文件夹并重新启动并恢复了所有内容......现在我唯一的赌注可能是重新安装我所有的开发机器,因为这可能与安装有关Visual Studio 15 RTM 并排(尽管文档说它可以正常完成)。请看我的编辑,我已经发布了 global.json 文件。谢谢!
标签: asp.net-core entity-framework-core