将项目从 ASP.NET 5 RC1 迁移到 ASP.NET Core 1.0 的依赖性问题

Dependency issues migrating project from ASP.NET 5 RC1 to ASP.NET Core 1.0

我很难将我的 asp.net(核心)应用程序从 dnx46 转换为 .netcoreapp1.0 因为两个特定依赖项( Microsoft.Azure.ServiceBusSystem.IO.Ports.SerialPort

乐观地说,我打赌这些功能最终有一天会登陆 .net 核心.. 但与此同时,我发现将我的应用程序从绰号 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",
      }
    }
  }
}

Resolving System.IO.Ports.SerialPort however is still an issue and I don't understand how to make this work. I was hoping that importing net462 framework in .netstandard1.3 moniker, would allow to find the System.IO.Ports.SerialPort object but it does not.

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

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

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

如果您计划部署到 windows 盒子并以 net452 为目标,那么只需依赖 net452。我整理了一个migration guide来分享我的升级经验,也许对你有帮助?我最初有这样的误解,认为我会依赖 netstandard1.* 然后 "import": "net4*",David Fowler 嘲笑我并说了一些 "dude that's do wrong!" 的东西。 :P

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

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