2016-10-03 49 views
1

有關.net核心應用程序(例如ASP.Net Core)向後引用可能性的信息有點混淆到常用的.net框架庫。我現在有以下印象:從.net核心應用程序引用「傳統」(舊).net庫的可能性

  1. 如果您使用的是「netcoreapp1.0」,那麼您根本無法引用普通的庫。
  2. 如果您正在使用例如「net451」,那麼你可以參考它,但你必須首先將它包裝在帶有相應標籤的nuget包中。

聽起來不錯?

P.S.我在想,也許情況1反編譯爲IL,並重新編譯爲「netcoreapp1.0」或「netstandard1.6」或其他巫術可以幫助?

P.P.S.正如在註釋中提到的,可以引用普通類庫項目,該項目又可以引用庫,但這意味着您必須包含庫中的所有內容,因此如果可以使用這些庫,則需要很多。

+0

這是不可用* yet *,但有承諾能夠在[.NET Standard 2]中執行一些外部引用(https://blogs.msdn.microsoft.com/dotnet/2016/09/26/introducing-net-standard/) (在shim中搜索該頁面) –

+0

在第二個選項中,您也可以引用舊格式的項目。 –

回答

4

目前這是不可能的。

你有3種選擇:

  1. 嘗試將舊項目轉換到便攜式類庫(PCL),然後可以通過您的.NET應用程序的核心引用。
  2. 包裝你的項目爲NuGet包(你已經提到)
  3. 添加項目作爲一個類庫(在評論中提到的),但根據that SO answerthat GitHub thread它似乎並不容易,使其工作。

編輯於20-03-2017: 跨越this post剛來到:現在看來有可能通過改變的.csproj,UNTESTED(還)

<PropertyGroup> 
    <TargetFramework>netcoreapp1.1</TargetFramework> 
    </PropertyGroup> 
有你的.NET應用程序的核心目標.NET 4.6

<PropertyGroup> 
    <TargetFramework>net46</TargetFramework> 
    </PropertyGroup> 

然後dotnet restore其次dotnet run

+0

我可以將任何普通的dll轉換爲可從asp.net核心應用程序引用的nuget包嗎?它是否也適用於「netcoreapp1.0」或僅適用於「netXXX」? –

+0

根據這篇文章https://blogs.msdn.microsoft.com/cesardelatorre/2016/06/28/running-net-core-apps-on-multiple-frameworks-and-what-the-target-framework-monikers -tfms-about-about 如果您想要使用傳統的.NET庫,則需要使用在傳統.NET Framework(CLR)之上運行的ASP.NET Core。如果您的ASP.NET Core應用程序在CoreCLR上運行,那麼您不能。對於你提到的那個場景,「brown-field」,推薦的方法將是我提到的第一個,所以使用運行在傳統CLR(.NET Framework CLR)之上的ASP.NET Core。 – Darxtar

+0

另一個問題是我必須將包上傳到nuget,還是隻能在本地使用而不公開? (否則這種可能性沒有意義,私密代碼) –

相關問題