[英]How to solve nuget dependency hell in dotnet core?
我正在開發具有少數不同項目的 asp.net 核心解決方案,每個項目都使用某個版本庫的 3rd 方 NuGet 包。 這些版本,例如 1.0.0 和 2.0.0,有重大更改。 另外,這個庫是由另一個項目團隊開發的,不受我的影響。 所以在未來,將會有與另一個版本不兼容的版本,我的限制是在特定項目中使用一個確切的版本。
以下是該解決方案的最小概述:
在 Visual Studio 的開發過程中,一切都很好,我可以在每個項目中使用我的版本庫的各個方法。 如果我最終發布我的應用程序,輸出文件夾中只有一個v2.0.0 的 CustomLibrary.dll 。
我對此有點困惑。 這個 dll 是否包含兩個版本並且 dotnet 可以在運行時解析它們? 如果不是這種情況,應用程序將在運行時失敗,因為 v1.0.0 的方法和輸出可能與 v2.0.0 完全不同。
(.NET Framework中我能做到這樣,但似乎並不在.net中的核心應用)
是否有部署同一強命名庫的不同版本的解決方案? 我想應該可以部署特定版本的 NuGet 包嗎?
如果您能幫助我,我將不勝感激。
有幾個 .NET Core 架構限制會影響應用程序設計:
記住這一點,您需要重新設計您的應用程序並在運行時動態加載帶有 CustomLibrary v1.0.0 的 Project1。 Project2 也是如此。 您應該最終得到一個新架構,其中 Project1 和 Project2 將發布到不同的文件系統位置並在運行時動態加載。
在這種情況下,您的應用程序需要在其生命周期內同時使用 Project1 和 Project2,只要您的程序集可以很好地與可收集的 AssemblyLoadContext 一起使用,就可以了。 場景是 Project1 和 Project2 都能夠使用可收集的 AssemblyLoadContext 加載和卸載,並且應用程序將根據需要在它們之間切換。
希望這將有助於解決問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.