2017-01-31 109 views
3

我想创建我的第一个ASP.Net核心项目的迁移,我正在开发Visual Studio 2015.我的解决方案只有一个项目。我的project.json文件驻留在我的Project文件夹的根目录中。实体框架核心 - 不能添加第一迁移

的项目我点击右键并选择“打开命令行>默认”,然后输入以下内容:

dotnet ef migrations add InitialDatabase 

命令行返回:

No project was found. Change the current working directory or use the --project option. 

我已经尝试了所有不同版本EntityFrameworkCore和工具。我的project.json文件如下:

{ 
    "dependencies": { 
    "Microsoft.AspNet.Tooling.Razor": "1.0.0-rc1-final", 
    "Microsoft.AspNetCore.Diagnostics": "1.0.1", 
    "Microsoft.AspNetCore.Mvc": "1.0.1", 
    "Microsoft.AspNetCore.Mvc.TagHelpers": "1.0.1", 
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.1", 
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.1", 
    "Microsoft.AspNetCore.StaticFiles": "1.0.1", 
    "Microsoft.EntityFrameworkCore": "1.0.2", 
    "Microsoft.EntityFrameworkCore.SqlServer": "1.0.2", 
    "Microsoft.EntityFrameworkCore.Design": { 
     "type": "build", 
     "version": "1.0.2" 
    }, 
    "Microsoft.EntityFrameworkCore.Tools": { 
     "type": "build", 
     "version": "1.0.0-msbuild3-final" 
    }, 
    "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.0.0-msbuild3-final", 
    "Microsoft.Extensions.Configuration.Json": "1.0.1", 
    "Microsoft.Extensions.Logging.Console": "1.0.1", 
    "Microsoft.NETCore.App": { 
     "type": "platform", 
     "version": "1.0.1" 
    } 
    }, 

    "tools": { 
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final", 
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-msbuild3-final", 
    "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.0.0-msbuild3-final" 
    }, 

    "frameworks": { 
    "netcoreapp1.0": { 
     "imports": [ 
     "dotnet5.6", 
     "portable-net45+win8" 
     ] 
    } 
    }, 

    "buildOptions": { 
    "emitEntryPoint": true, 
    "preserveCompilationContext": true 
    }, 

    "runtimeOptions": { 
    "configProperties": { 
     "System.GC.Server": true 
    } 
    }, 

    "publishOptions": { 
    "include": [ 
     "wwwroot", 
     "web.config" 
    ] 
    }, 

    "scripts": { 
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ] 
    } 
} 

任何建议将非常受欢迎。谢谢。

+0

指向具有project.json并执行该命令的目录。我认为你目前在父文件夹(上一级)。 – Developer

+0

试试这个:在VS中,打开软件包管理器控制台(如果你没有看到它,请进入'查看 - >其他Windows - >软件包管理器控制台)。在PMC中,调用'Add-Migration {YourMigrationNameHere}'。 – steamrolla

+0

我认为在包管理器中使用添加迁移现在已被弃用。 – TDC

回答

5
"tools": { 
    "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.0.0-msbuild3-final" 
} 

版本1.0.0-msbuild3-final只适用于新的基于MSBuild的项目(不project.json)。改为使用版本1.0.0-preview3-final

+0

好的建议@bricelam。偶然,昨天晚上我尝试使用以下组合:''Microsoft.EntityFrameworkCore“:”1.0.2“','”Microsoft.EntityFrameworkCore.Design“:”1.0.0-preview2-final“,”“Microsoft。 EntityFrameworkCore.Tools“:”1.0.0-preview2-final“','”Microsoft.EntityFrameworkCore.Tools.DotNet“:”1.0.0-msbuild3-final“'它工作。作为ASP.Net Core的新手,很难找到协调一致的软件包的正确组合。我应该试试'1.0.0-preview3-final'吗? – TDC

+1

从'project.json'切换到MSBuild时,工具故事有点混乱。当工具最终RTM(与VS 2017),EF的故事至少将是确保所有的主要和次要版本号码(例如1.0或1.1,但不是混合),有很多努力来简化你得到一个单一的,一致的.NET核心包... – bricelam

+0

很高兴知道。像许多人一样,我相信,我期待着它安定下来。 – TDC

0

dotnet-ef命令已移动。

您将需要一个参考 Microsoft.EntityFrameworkCore.Design添加到 Microsoft.EntityFrameworkCore.Tools.DotNet到你的依赖在 project.json,再加入Microsoft.EntityFrameworkCore。 Tools.DotNet到工具部分,你应该很好去。

引用来源:http://errummwelluhh.blogspot.com。 我也为同一个问题here发布了相同的答案。