2016-12-09 53 views
2

我花了整整两天的时间尝试为我的项目数据库创建初始迁移。这真是太过分了。文档的每个预览版本指向不同的方向,并且有很多未解决的问题在一段时间内飞行。我的项目是一个运行在完整框架(net462)上的AspNetCore应用程序,尽管我想我已经尝试了预览版本的每一个组合,甚至在这个问题上提出的解决方法:EF Tools 1.1.0-preview4 Unrecognized option '--config'或在这个:https://github.com/aspnet/EntityFramework/issues/7083但都不工作。无法使用EF Core 1.1创建迁移

这是我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-最终版本我打这个错误:如果我用的是每晚构建我得到这样一个

Unrecognized option --config 

,至极是某种荒谬的,因为我的应用程序只有一个项目,而不是一个DLL(它也有emitEntryPoint:真集)

Could not load assembly 'Sales'. Ensure it is referenced by the startup project 'Sales' 

但是,这是我最喜欢的一个,当我降级到的工具,我得到这个1.0.0-preview3决赛超现实主义之一:

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核心应用程序中创建迁移,并将目标设置为完整的.net框架(net462)和任何版本的ef工具?

如果是这样,如何?

编辑:

针对项目.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核心将有适当的工具和程序,同时我该死的百万次我决定投注这项技术!

编辑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 \

+0

有什么问题/例外/错误? – Dmitry

+0

@Dmitry - 是否有足够的错误? – Vi100

+0

是的,没有:)你在项目文件夹中有一些噩梦,需要更多的细节来理解“为什么”。 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

回答

2

我讨厌回答我自己的问题,但我想没有太多人会进入胡同......因此对于那些正在为类似问题而苦苦挣扎的人,我会不会ELL,地雷从这个配置来到project.json:

... 
"buildOptions": { 
    "platform": "x86", <- THIS!!! 
    "debugType": "portable", 
    "preserveCompilationContext": true, 
    "emitEntryPoint": true 
}, 

删除“平台”键后,移民又开始工作...

我真的不知道我什么时候介绍说,因为在升级到.NET Core SDK的1.1版之前,我没有尝试创建迁移。也许它是从互联网上的一个例子中复制出来的,也许它来自之前的版本,我不知道,但是这让我疯了好几天,我希望它能帮助别人。

+0

好消息!只要这可能是(或者不知道)EF中的错误 - 我建议你在Github上创建一个小项目(删除额外的东西,只需要最少的),这将证明这个问题并且在EF回购中产生问题。 https://github.com/aspnet/EntityFramework/issues) - 可能会对未来有帮助。 – Dmitry

相关问题