[英]Should nugets installed for library project also be installed to the application project?
如果我有一個庫項目MyLib
需要 Nuget XYZ
,並且我創建了依賴於MyLib
的應用程序MyApp
,我是否需要將 nuget 依賴項顯式添加到MyApp
或者VS應該解決這個問題?
我找不到這個基本問題的明確答案,而且我的測試顯示不確定的結果 - 我看到一些 DLL 被復制到 /bin 文件夾,而其他一些則沒有。 在我的項目參考中,沒有列出 Nuget 程序集,我不確定它們是否應該......現在有點“DLL地獄陰霾”!
來自 memory 處理復雜的 C#.NET 應用程序 - 是的,我相信有必要添加依賴項。
我開發的應用程序有這樣的結構:
服務器 --> 插件 1 --> MongoDB NuGet --> 插件 2 --> MongoDB Z20055252BAD725BE70C329DC
我發現有必要將 MongoDB NuGet 引用添加到每個插件以及服務器組件。 一旦我這樣做了,它就可以可靠地工作(盡管它確實有缺點,即對於 NuGet 庫的每次更新,我都需要單獨更新每個插件)。
如果有更簡潔的解決方案很高興得到糾正,只是想分享我的經驗!
為庫項目安裝的 nugets 是否也應該安裝到應用程序項目中?
這取決於你。 Of course, adding the nuget package to the main project is not a trouble, it will not cause any problems, it is simple and convenient, but when you pay attention to the following points, there is no need to add the nuget package in addition .
在所有這些之前,有兩種方法可以引用 nuget 包: packages.config 格式和PackageReference 格式。
Packages.config
格式用於舊的net framework
項目,而PackageReference
格式用於新的 sdk 樣式項目( net core
和net standard
)。
不過net framework項目也可以使用PackageReference(可以通過Tools
--> Options
--> Nuget Package Manager
--> General
--> Package Management
),net core和標准的包管理項目不能使用Packages.config
建議
1)如果庫項目是Net framework
,實際上,你應該使用將相同的nuget添加到主項目中,在某些情況下,這些dll可以復制到你的MyApp項目的output路徑中,
但是,如果您仍想在代碼編輯器中使用這些 dll,intellisense 將不會列出它,在這種情況下,您應該在主項目中安裝相同的 nuget package。
此外,只有這兩個項目都使用PackageReference格式(帶有 PackageReference 的Net Framework
庫項目和帶有 PackageReference 的 MyApp Net Framework
項目)
2)如果您的庫項目是Net Standard
(PacakgesReference nuget 格式),並且您的MyApp項目是帶有packages.config
的Net Framework
,則主項目中的 dll 將丟失。 解決方法是在 MyApp.csproj 文件中添加這些節點:
<PropertyGroup>
<RestoreProjectStyle>PackageReference</RestoreProjectStyle>
</PropertyGroup>
然后您將在主項目中獲得智能感知。
----------------------------------
或者您的 Myapp 項目是具有 PackageReference 格式的網絡框架,您不應該添加該節點,您可以直接獲取您想要的內容。
如果MyApp項目是Net Core (PackageReference),則不必擔心這一點。
=================================
結論
為了滿足您的要求,您最好使用Net Standard庫項目,而您的 MyApp 項目最好使用PackageReference nuget 管理格式( Net Core
或帶有 PackageReference 格式的Net Framework
)。
此外,您應該將您的 VS 更新到最新版本以獲得更好的體驗,以防有一些重要的修復。 此外,您可以參考類似的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.