wcf - 如何使用较旧的第三方依赖项在 net46 框架上构建 ASP.NET Core RC2 应用程序

标签 wcf entity-framework-6 asp.net-core kendo-asp.net-mvc dotnet-cli

我有一个 Shiny 的新 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 feed 以指向 https://www.myget.org/F/aspnetcirelease/api/v3/index.json 然后我对 project.json

进行以下更改
  • 从最顶层节点删除“版本”
  • 将以下属性添加到 complationOptions 对象: "debugType": "portable"
  • 依赖项:将 AspNet 更改为 AspNetCore
  • 依赖项:将所有 rc1-final 更改为 *
  • 检查 MVCMVC Tag Helpers 是否已从 6.0 重命名为 1.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 恢复,除了 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 需要引用 net45net451 而不是 dnx451,但由于这来自 NuGet feed,我可以不要改变这个。

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

最佳答案

你的方法很接近。做得好。有一些更改/添加需要进行。以下内容适用于 dotnet Restore,然后使用 dotnet runfull code listing is on GitHub

框架

您的框架失败,因为.NET Core (netcoreapp) is not compatible with .NET Framework (net) ,因此您无法导入 net45。您的错误表明 Kendo.Mvcdnx451dnxcore50 兼容;而是导入其中之一。然后为 Kendo.Mvc 所依赖的某些包添加可移植导入(如果不这样做,您将看到构建错误,告诉您执行此操作。)

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

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

依赖项

更改对 Microsoft.NETCore.App 的依赖,使其不具有 "type" : "platform" 。否则,您的应用程序将无法自行运行,因为 NuGet 将抑制包的 Assets 。

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

运行时

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

"runtimes": {
  "win8-x64": {}
}

关于wcf - 如何使用较旧的第三方依赖项在 net46 框架上构建 ASP.NET Core RC2 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37005644/

相关文章:

c# - 如何更改 DataContractSerializer 文本编码?

WCF 服务在一段时间后自行消亡

c# - 无法加载文件或程序集 'EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'

c# - 将 Effort 与 Entity Framework 结合使用时,更新模型会导致接口(interface)从 DbContext 中删除

c# - 使用 IdentityServer4 添加自定义 API 访问声明

具有不想工作的 WCF 服务的 WCF 新手(我认为是元数据)

asp.net - 控制台应用程序托管 ASPX 页面?

c# - 如何使用 Entity Framework 和 Moq 进行单元测试?

c# - 如何从 Asp.Net Core 的 ConfigureServices 方法内部访问添加到 DI 容器的服务

asp.net - Kestrel 对于在 ALB 后面的 AWS ECS 上运行的 ASP.NET Core 网站是否足够?