【问题标题】:Dependency issues migrating project from ASP.NET 5 RC1 to ASP.NET Core 1.0将项目从 ASP.NET 5 RC1 迁移到 ASP.NET Core 1.0 的依赖性问题
【发布时间】:2016-05-25 16:49:35
【问题描述】:

由于两个特定的依赖项(Microsoft. Azure.ServiceBusSystem.IO.Ports.SerialPort )

积极地说,我打赌这些功能终有一天会登陆 .net core。但与此同时,我发现将我的应用程序从绰号 dnx46 转换为 .netstandard1.3 允许我解决 ServiceBus 依赖项。

解决 System.IO.Ports.SerialPort 然而仍然是一个问题,我不明白如何使这项工作。我希望在 .netstandard1.3 名字对象中导入 net462 框架,可以找到 System.IO.Ports.SerialPort 对象,但它没有。

我错过了什么?

作为参考,有我的 project.json :

{
  "dependencies": {
    "Microsoft.NETCore.App": {
      "version": "1.0.0-rc2-3002702",
      "type": "platform"
    },
    "Microsoft.NETCore.Platforms": "1.0.1-*",
    "Microsoft.EntityFrameworkCore": "1.0.0-rc2-final",
    "Microsoft.EntityFrameworkCore.Sqlite": "1.0.0-rc2-final",
    [...more stuff...]
  },
  "frameworks": {
    "netcoreapp1.0": {
      "dependencies": {
        // To be restored when they'll become available on .net core
        //  "Microsoft.WindowsAzure.ConfigurationManager": "3.2.1",
        //  "WindowsAzure.ServiceBus": "3.2.1",
      }
    },
    "netstandard1.3": {
      "buildOptions": {
        "define": [ "INCLUDE_WINDOWSAZURE_FEATURE" ]
      },
      // Imports of net462 fixes loading of
      //  - NewtonSoft.Json
      //  - System.Runtime.Loader for "Microsoft.NETCore.App"
      "imports": [
        "net462"
      ],
      "dependencies": {
        "Microsoft.NETCore.Portable.Compatibility": "1.0.1-rc2-24027"
        "Microsoft.WindowsAzure.ConfigurationManager": "3.2.1",
        "WindowsAzure.ServiceBus": "3.2.1",
      }
    }
  }
}

【问题讨论】:

    标签: c# asp.net-core dnx .net-core .net-core-rc2


    【解决方案1】:

    但是,解决 System.IO.Ports.SerialPort 仍然是一个问题,我不明白如何进行这项工作。我希望在 .netstandard1.3 名字对象中导入 net462 框架可以找到 System.IO.Ports.SerialPort 对象,但它没有。

    当面向 .NET Core 或 .NET Standard 时,您不能引用 System.IO.Ports.SerialPort,因为此协定仅存在于完整的 .NET 桌面框架中。

    这个库最终可能是 ported,但与此同时,您必须使用 .NET Desktop(例如 net462)而不是 .NET Core。

    删除netcoreapp1.0netstandard1.3 并添加net462,它应该可以工作。

    【讨论】:

    • 我实际上并没有意识到我可以做相反的事情:有一个net462 框架部分并在netcoreapp1.0 上进行导入以获取所有AspNetCoreEntityFrameworkCore 功能。跨度>
    • 您不需要为net462 导入netcoreapp1.0,因为ASP.NET Core 和EF Core 都与.NET Desktop 兼容(为net462 导入netcoreapp1.0 不会使无论如何,很有意义)
    • 知道了,你是对的。我担心最近的重命名和重新版本控制风暴让我变得最好:/ 我确信 EFCore 和 asp.net core 都需要 .netcore 才能运行,但事实并非如此。一开始很混乱。如果我可能会问,使用导入部分的目的和时间是什么?
    【解决方案2】:

    如果您计划部署到 Windows 框并以 net452 为目标,那么只需依赖于 net452。我整理了一个migration guide 来分享我的升级经验,也许它会有所帮助?我最初有一个误解,认为我会依赖 netstandard1.*,然后是 "import": "net4*",David Fowler 嘲笑我并说“伙计做错了!”。 :P

    您应该将您的 project.json frameworks 更改为如下所示:

    "frameworks": {
        "net462": { }
      }
    

    【讨论】:

    • 理想情况下,我希望应用程序可以部署在 .net 核心支持的任何机器上(所以不是特别是 Windows 机器)。在我告诉客户所有关于 .net 核心优势的广告之后,定位 net46* 感觉就像是一个后备计划。我按照 Pinpoint 的建议和您的建议将 netcoreapp1.0 导入到 net462 框架,应用程序现在可以编译。自从您与 David Fowler 就这个 import / dependency 概念进行了交谈,您对 import 的作用有更清晰的了解吗? (谈论这个导入 -> framework : { import : [] }
    猜你喜欢
    • 1970-01-01
    • 2015-01-04
    • 2019-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多