簡體   English   中英

添加沒有依賴項的NuGet軟件包

[英]Add NuGet package without its dependencies

我確信我們很多人都遇到了這個問題,並且我在任何地方都無法解決問題。

我在許多項目中都有一個共享庫(Common.Infrastructure.dll),並且我使用NuGet Server中內置的TeamCity托管此庫。 該庫內部依賴於NuGet軟件包,例如Fluent Nhibernate,Log4net,StructureMap等。

很簡單,在需要此共享依賴項的項目中執行“ Install-Package Common.Infrastructure”也將Fluent NHibernate,log4net,SM等添加為項目的“引用”。 我不會直接使用Common.Infrastructure的這些依賴關系,但顯然最終會在輸出(bin / debug)文件夾中使用它們。

有沒有辦法不通過內置的nuget(nuspec)支持引用這些依賴項?

Install-Package命令具有用於忽略依賴關系的標志。 例:

Install-Package Common.Infrastructure -IgnoreDependencies

請注意,他的實際問題是關於如何創建不添加依賴項的軟件包,而不是如何安裝沒有依賴項的軟件包。

使用Nuspec,您可以顯式控制目標程序包引用了哪些程序包以及程序包中的哪些程序集。 但是,我認為沒有辦法完全按照NuGet的要求進行操作,因為無法向Visual Studio指示應將程序集復制到bin目錄而不將其添加為項目引用。

我認為您的問題是將太多功能集成到單個程序集中的症狀。 我建議您將Common.Infrastructure.dll拆分為單獨的程序集,以實現功能的各個方面。 就像是:

  • Common.Infrastructure.Logging.dll-取決於Log4net
  • Common.Infrastructure.Database.dll-取決於Fluent Nhibernate
  • Common.Infrastructure.IoC.dll-取決於StructureMap
  • 任何其他合適的子裝配
  • Common.Infrastructure.dll-一種新的較小的功能核心,僅取決於框架

當然,分解成的程序集的確切集合將取決於Common.Infrastructure.dll中的功能以及使用方式。 一旦為這些程序集中的每個程序集提供了單獨的程序包,就可以選擇在給定項目中引用哪些程序包,並將其限制為您真正需要的方面和依賴項。

有解決方案。

編輯您的nuspec文件,並僅添加所需的參考dll。 參考參考文件=“ dllwhichyouwantToreference.dll”參考

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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