2016-12-16 59 views
2

我試圖移植一個C#控制檯項目,在Windows上使用.NET Core工作正常。 我已經創建了一個project.json文件,運行dotnet恢復和一切似乎工作正常。 但是當我運行DOTNET構建,我得到這個消息:是否可以使用.net核心的BackgroundWorker類?

類型或命名空間名稱「的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" 
    } 
    } 

我這麼想嗎?

謝謝!

+0

我不知道如果我失去了一些東西......你爲什麼要張貼您的project.json? – RandomStranger

+3

'BackgroundWorker'好像是爲WinForms和WPF構建的 - 在控制檯程序中,您可能會使用原始線程。但性感新的替代品是Task Parallel Library(即System.Threading.Tasks命名空間)。你有沒有考慮過使用它? – Dai

+0

您還需要安裝相應的[package](https://www.nuget.org/packages/System.ComponentModel/)。與.NET Framework不同,這些「系統程序集」通常不是。 .NET Core更加模塊化。 –

回答

3

您需要包含System.ComponentModel.EventBasedAsync nuget包作爲依賴項(而不是System.ComponentModel nuget包)。如果您查看BackgroundWorker.cs file on GitHub,則可以看到它嵌套在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" 
    } 
    } 
相關問題