3

我有一个闪亮的新 Asp.Net Core MVC 应用程序,它引用了一些旧net45库。

在完整的 net45 框架上与 Asp.Net Core RC1 一起工作正常。从 Asp.NET Core rc1 迁移到 rc2 我遇到了一个我不知道如何解决的障碍。

该应用程序是一个使用 EF6、Autofac、Kendo.MVC 的 ASP.NET Core 应用程序,它需要在完整的 .Net 4.6 框架上运行,因为存在使用 WCF 的参考库。

在从 rc1 迁移到 rc2 时,我首先将 NuGet.config 提要更新为指向,https://www.myget.org/F/aspnetcirelease/api/v3/index.json然后对project.json

  • 从最顶部的节点中删除“版本”
  • 将以下属性添加到 complationOptions 对象:“debugType”:“portable”
  • 依赖项:更改AspNetAspNetCore
  • 依赖项:将 all 更改rc1-final*
  • 检查MVCMVC Tag Helpers已重命名6.01.0
  • 删除所有依赖项Application Insights
  • 删除所有依赖项Microsoft.AspNet.Tooling.Razor
  • 将依赖项添加到 "Microsoft.NETCore.App": { "type": "platform", "version": "1.0.0-*" }
  • 添加一个新的内容对象: "content": [ "wwwroot", "Views", "web.config", "appsettings.json" ]
    • 更新所有 using 语句以引用AspNetCore.*而不是AspNet.*

然后我将框架对象替换为:

"frameworks": {
  "netcoreapp1.0": {
    "imports": [
      "net45"
    ]
  }
}

我做了一个dotnet restore,一切都解决了,除了 1 个包:

error: Package Kendo.Mvc 2016.1.412 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0). Package Kendo.Mvc 2016.1.412 supports:
error:   - dnx451 (DNX,Version=v4.5.1)
error:   - dnxcore50 (DNXCore,Version=v5.0)
error: One or more packages are incompatible with .NETCoreApp,Version=v1.0.
info : Committing restore...


Errors in project.json
    Package Kendo.Mvc 2016.1.412 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0). Package Kendo.Mvc 2016.1.412 supports:
      - dnx451 (DNX,Version=v4.5.1)
      - dnxcore50 (DNXCore,Version=v5.0)
    One or more packages are incompatible with .NETCoreApp,Version=v1.0.

因此,Kendo.MVC 需要引用net45ornet451而不是dnx451,但由于它来自 NuGet 提要,因此我无法更改它。

你知道我是否可以快速修复而不是等待 Kendo.MVC 的下一个版本?

4

1 回答 1

7

你的方法很接近。做得好。有一些更改/添加。以下适用于dotnet restorethen dotnet run。完整的代码清单在 GitHub 上

构架

frameworks失败是因为.NET Core ( ) 与 .NET Framework ( )netcoreapp不兼容net,因此您无法导入net45。您的错误说Kendo.Mvcdnx451and兼容dnxcore50;而是导入其中之一。然后为一些Kendo.Mvc依赖的包添加一个可移植的导入(如果你不这样做,你会看到告诉你这样做的构建错误。)

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

现在您的应用程序将恢复和构建。不过,它还不会运行。

依赖关系

更改您对Microsoft.NETCore.App不具有"type" : "platform". 否则,您的应用将无法自行运行,因为 NuGet 将抑制包的资产。

"dependencies" : 
{
    // others omitted for clarity
    "Microsoft.NETCore.App": "1.0.0-*",
    "Kendo.Mvc": "*"
}

运行时

添加一个runtimes部分;我们现在在 project.json 中指定它,而不是依赖dnvm.

"runtimes": {
  "win8-x64": {}
}
于 2016-05-03T13:49:05.653 回答