2016-05-25 81 views
0

我有一個很難轉換我的asp.net(核心)的應用程序從dnx46.netcoreapp1.0因爲兩個特定的依賴(Microsoft.Azure.ServiceBusSystem.IO.Ports.SerialPort依賴問題遷移項目從ASP.NET 5 RC1到ASP.NET 1.0的核心

是正的,我正在做賭注,這些功能最終將.NET的核心土地1天..但在此期間, ,我發現我的應用程序從綽號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", 
     } 
    } 
    } 
} 

回答

2

解決System.IO.Ports.SerialPort仍然是一個問題,我不知道如何使這項工作。我希望在.netstandard1.3名字對象中導入net462框架,可以找到System.IO.Ports.SerialPort對象,但它不會。

定位.NET核心或.NET標準時不能引用System.IO.Ports.SerialPort,因爲此契約僅存在於完整的.NET桌面框架中。

此庫最終可能爲ported,但同時您必須使用.NET Desktop(例如net462)而不是.NET Core。

刪除netcoreapp1.0netstandard1.3並添加net462它應該工作。

+0

我居然沒意識到我可以做相反的:有一個'net462'框架部分和'netcoreapp1.0做進口'獲得所有'AspNetCore'和'EntityFrameworkCore'功能。 – DarkUrse

+0

你不需要爲'net462'導入'netcoreapp1.0',因爲ASP.NET Core和EF Core都與.NET Desktop兼容(爲'net462'導入'netcoreapp1.0'沒什麼意義,無論如何) – Pinpoint

+0

Gotcha,你是對的。最近重命名和重新版本風暴得到了我最好的我很害怕:/我相信EF * Core *和asp.net * core *都需要.net * core *運行的情況並非如此..所以最初令人困惑。如果我可能會問,目的是什麼以及何時適合使用進口部分? – DarkUrse

2

如果您打算部署到Windows窗口並定位到net452,那麼只需依賴net452即可。我放了一個migration guide分享我的升級經驗,也許它可能有幫助?我最初有這種誤解,我會依賴netstandard1.*然後"import": "net4*",大衛福勒嘲笑我,並說了一些「做錯了哥們兒」的程度。 :P

你應該改變你的project.json frameworks看起來像這樣:

"frameworks": { 
    "net462": { } 
    } 
+0

理想情況下,我希望將應用程序部署在.net核心支持的任何盒子上(因此不是特別的Windows盒子)。在告訴客戶.net核心優勢的所有廣告之後,針對net46 *就像是一個備用計劃。我遵循了Pinpoint和你的建議,將'netcoreapp1.0'導入到'net462'框架中,並且現在編譯應用程序。既然你和David Fowler就這個「導入/依賴」概念進行了一次聊天,你對導入有什麼更清楚的想法嗎? (談論這個導入 - >'框架:{import:[]}') – DarkUrse