簡體   English   中英

為庫項目安裝的 nugets 是否也應該安裝到應用程序項目中?

[英]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 corenet 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.configNet 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM