2015-06-02 69 views
3

我在我的新ASP.NET 5(vnext)項目中的一個現有項目中引用了庫時遇到問題。將常規類庫轉換爲ASP.NET 5(vnext)

我在網上找不到有關轉換現有庫或更改編譯目標的參考。

我創建了一個新的ASP.NET 5庫,它有一個不同的項目結構,所以我猜這就是爲什麼似乎沒有辦法將它們從VS移植出來。

除了複製文件之外,還有其他的方法嗎?這將創建2個代碼庫,每個代碼庫都需要維護。

回答

4

有2個解決方案:

使用共享代碼
您可以創建一個ASP.Net類庫,並要求它從其他類庫編譯的.cs。要做到這一點你project.json添加編譯選項添加:

{ 
    ... 
    "compile": [ "**\\*.cs", "..\\Shared\\*.cs" ], 
    ... 
} 

在此示例中..\Shared文件夾中的代碼將與該項目的代碼進行編譯。

編譯您的ASP.Net類庫淨4.5
您可以創建一個ASP.Net類庫,並要求它targer 4.5框架。要做到這一點你project.json添加net45選項框架添加

{ 
    ... 
    "frameworks": { 
     "net45": { }, 
     "dnx451": { }, 
     "dnxcore50": { } 
    }, 
    ... 
} 
此示例中

項目目標3個框架:4.5,ASP.Net充分和ASP.Net核心

0

新項目系統支持編譯到各種構建目標,包括'經典'.NET項目類型(類庫,控制檯等)。但是您確實需要使用新的項目系統才能使用它,這會將文件複製到新項目中。

這可能是非常有用的原因是,如果您可以使用#if <framework-target>塊通過平臺分隔代碼來阻止任何平臺不支持的運行代碼,那麼您可以維護一個代碼庫。在這種情況下,framework-target是project.json中框架條目的大寫版本(即NET45,DNX451,DNXCORE50)。

對我來說,它看起來像新的項目系統允許使用單個代碼庫來服務多個目標。如果您的代碼可以實現這一點,那麼同時從一個項目文件生成多個輸出是一個不錯的選擇。這不適用於所有情況,但我認爲這對於小型而非常集中的模塊化選擇來說是個不錯的選擇。

如果您的項目需要更多的項目級別處理(特殊的ms-build任務,預處理和後處理等),那麼新的單個項目可能無法很好地工作,並且您最好爲每個目標使用separte項目。隨着將更多選項添加到新項目類型中,未來可能會發生變化。