是否可以将 BackgroundWorker 类与 .net core 一起使用?

Ryl*_*lyn 5 .net c# .net-core

我正在尝试将在 Windows 上运行良好的 C# 控制台项目移植到带有 .NET Core 的 Linux。我创建了一个 project.json 文件,运行 dotnet restore,一切似乎都正常。但是当我运行 dotnet build 时,我收到以下消息:

找不到类型或命名空间名称“BackgroundWorker”(您是否缺少 using 指令或程序集引用?)

根据.NET Core API,类 BackgroundWorker 似乎存在于 System.ComponentModel 中。

这是我的 project.json :

"version": "1.0.0-*",
  "buildOptions": {
  "debugType": "portable",
  "emitEntryPoint": true
  },
  "dependencies": {},
  "frameworks": {
    "netcoreapp1.1": {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.1.0"
        }
      },
      "imports": "dnxcore50"
    }
  }
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

谢谢 !

小智 5

您需要包含System.ComponentModel.EventBasedAsyncnuget 包作为依赖项(而不是System.ComponentModelnuget 包)。如果您查看GitHub 上BackgroundWorker.cs 文件,您可以看到它嵌套在System.ComponentModel.EventBasedAsync命名空间下。

您的 project.json 将如下所示:

  "version": "1.0.0-*",
  "buildOptions": {
  "debugType": "portable",
  "emitEntryPoint": true
  },
  "dependencies": {},
  "frameworks": {
    "netcoreapp1.1": {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.1.0"
        },
        "System.ComponentModel.EventBasedAsync": "4.3.0"
      },
      "imports": "dnxcore50"
    }
  }
Run Code Online (Sandbox Code Playgroud)