我花了整整两天时间尝试为项目数据库创建初始迁移。这太令人沮丧了。每个预览版本的文档都指向不同的方向,并且有很多未公开的问题会在一段时间内发生。
我的项目是在完整框架(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 set),所以它有点荒谬。
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 ...
我对这么多版本的内容感到疯狂,我只想创建一个迁移,我必须使用的工具版本并不重要......现在是否有一个有效的配置或者我在尝试一些不可能的事情? 有没有人能够在asp.net核心应用程序中使用任何版本的ef工具在完整的.net框架(net462)中创建迁移?
如果是的话,怎么样?
修改
将项目定位到.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:
根据评论,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>
答案 0 :(得分:2)
我不想回答我自己的问题,但我想不会有太多人会进入这条小巷......所以对于那些正在努力解决类似问题的人,我会告诉我,我的项目来自于这个配置。杰森:
...
"buildOptions": {
"platform": "x86", <- THIS!!!
"debugType": "portable",
"preserveCompilationContext": true,
"emitEntryPoint": true
},
删除“平台”键后,迁移开始重新开始......
我不确定我何时引入了该设置,因为在升级到.NET Core SDK 1.1版之前我没有尝试创建迁移。也许它是从互联网上的一个例子中复制出来的,也许它来自以前的版本,我不知道,但这让我疯了好几天,我希望它可以帮助别人。