当前的运行时目标框架与项目不兼容。

13

我在将 Entity Framework 7 添加到我的 Asp.Net 5 项目后,正试图执行初始迁移。 我正在遵循这个 文档

在我的project.json文件中,我已经指定:

  "commands": {
    "web": "Microsoft.AspNet.Server.Kestrel",
    "ef": "EntityFramework.Commands"
  },

  "frameworks": {
    "dnxcore50": { }
  }

我尝试通过命令提示符在项目目录中执行以下命令:

dnx ef migrations add MyFirstMigration

但我收到了以下错误:

System.InvalidOperationException:当前运行时目标框架与 ProjectName 不兼容。当前运行时目标框架:'DNX,Version=v 4.5.1(dnx451)'。请确保运行时与 project.json 中指定的框架匹配。

奇怪的是,我的 project.json 明确地针对 dnxcore50。我还在 global.json 中进行了检查:

{
  "projects": [ "src", "test" ],
  "sdk": {
    "version": "1.0.0-beta8",
    "architecture": "x86",
    "runtime": "coreclr"
  }
}

我的软件包依赖关系都引用了beta8版本:

  "dependencies": {
    "EntityFramework.Commands": "7.0.0-beta8",
    "EntityFramework.Core": "7.0.0-beta8",
    "EntityFramework.SqlServer": "7.0.0-beta8",
    "Hl7.Fhir.DSTU2": "0.90.2",
    "Microsoft.AspNet.Authentication.Cookies": "1.0.0-beta8",
    "Microsoft.AspNet.Authentication.OpenIdConnect": "1.0.0-beta8",
    "Microsoft.AspNet.Diagnostics": "1.0.0-beta8",
    "Microsoft.AspNet.IISPlatformHandler": "1.0.0-beta8",
    "Microsoft.AspNet.Mvc": "6.0.0-beta8",
    "Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-beta8",
    "Microsoft.AspNet.Server.Kestrel": "1.0.0-beta8",
    "Microsoft.AspNet.StaticFiles": "1.0.0-beta8",
    "Microsoft.AspNet.Tooling.Razor": "1.0.0-beta8",
    "Microsoft.Dnx.Runtime": "1.0.0-beta8",
    "Microsoft.Framework.Configuration.Json": "1.0.0-beta8",
    "Microsoft.Framework.Configuration.UserSecrets": "1.0.0-beta8",
    "Microsoft.Framework.Logging": "1.0.0-beta8",
    "Microsoft.Framework.Logging.Console": "1.0.0-beta8",
    "Microsoft.Framework.Logging.Debug": "1.0.0-beta8",
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-beta8"
  }
1个回答

17

你需要将dnx451添加到你的项目支持的框架中,或者切换到.NET Core版本。

  "frameworks": {
    "dnxcore50": { },
    "dnx451": { }
  }

或者运行:

dnvm install latest -r coreclr

dnvm use default -r coreclr


1
我不明白为什么现在它能工作了。我已经在我的project.json文件中指定了dnxcore50框架。我运行了dnvm install latest -r coreclr,现在它可以工作了。但是为什么呢?该命令说明我已经安装了最新的core CLR运行时。 - Blake Mumford
1
安装coreclr会做两件事情。安装和使用。我已经更新了上面的内容以使其更清晰。将来,请运行“dnvm list”以查看您正在使用哪个运行时。默认情况下选择“CLR”版本,而不是“CoreCLR”。 - natemcmaster

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接