【发布时间】:2016-12-16 18:29:15
【问题描述】:
我正在尝试将在 Windows 上运行良好的 C# 控制台项目移植到带有 .NET Core 的 Linux。 我创建了一个 project.json 文件,运行 dotnet restore ,一切似乎都正常。 但是当我运行 dotnet build 时,我收到了这条消息:
找不到类型或命名空间名称“BackgroundWorker”(是 您缺少 using 指令或程序集引用?)
根据.NET Core API,System.ComponentModel中似乎存在BackgroundWorker类。
这是我的 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"
}
}
我错过了什么吗?
谢谢!
【问题讨论】:
-
我不确定我是否遗漏了什么......你为什么发布你的 project.json?
-
BackgroundWorker似乎是为 WinForms 和 WPF 构建的 - 在控制台程序中,您不妨使用原始线程。但性感的新替代品是任务并行库(即System.Threading.Tasks命名空间)。您是否考虑过使用它? -
您还需要安装相应的package。与 .NET Framework 不同,这些“系统程序集”通常不是。 .NET Core 更加模块化。
-
在控制台应用程序中使用旨在处理同步上下文和后台线程的 BW 有什么意义?扔掉它。
-
谢谢大家,即使安装了 System.ComponentModel 包,我也没有设法让 BackgroundWorker 工作。不过,它确实适用于 Mono。无论如何,正如你所建议的,我最终用任务替换了每个 BackgroundWorker。再次感谢!