我花了整整两天的时间尝试为我的项目的数据库创建初始迁移。这太令人沮丧了。每个预览版本的文档都指向不同的方向,并且有一段时间有很多 Unresolved 问题。
我的项目是在完整框架 (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(它也设置了 eagerEntryPoint: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 core 应用程序中创建迁移?
如果是这样,怎么做?
编辑:
将项目定位到 .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,而且它仍处于第一个版本。当它处于测试阶段时,我遇到了很多这样的问题,但现在事情应该是稳定的......他们已经改变了二十倍所有可以改变的东西,API,程序集名称,命名空间,包名称,约定。 .. 现在让我们等待工具的预览版 5、6 或 25,也许到 2035 年 EF Core 将拥有合适的工具和程序,同时我该死的一百万次赌注这项技术的决定!
编辑2:
根据评论,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\< 中唯一的一个文件夹/p>
最佳答案
我不想回答我自己的问题,但我想没有太多人会进入这个小巷......所以对于那些正在努力解决类似问题的人,我会告诉我的来自项目上的这个配置。 json:
...
"buildOptions": {
"platform": "x86", <- THIS!!!
"debugType": "portable",
"preserveCompilationContext": true,
"emitEntryPoint": true
},
删除“平台”键后,迁移再次开始工作......
我不太确定我何时引入了该设置,因为在升级到 .NET Core SDK 版本 1.1 之前我没有尝试创建迁移。也许它是从互联网上的一个示例复制的,也许是从以前的版本复制的,我不知道,但这让我发疯了好几天,我希望它能帮助那里的人。
关于asp.net-core - 无法使用 EF Core 1.1 创建迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41068199/