![](/img/trans.png)
[英]How do I create an individual nuget package for each project in a solution, with project references converted to nuget dependencies?
[英]NuGet: explicitly list package dependencies as package references in project so they can be uninstalled
我正在創建一個 NuGet package (我們稱之為Lib
),它在單獨的 package ( Lib.Analyzers
)中也有分析器
默認情況下,我希望在安裝Lib
時將Lib.Analyzers
安裝到項目中。 我可以通過在Lib
的依賴項(在.nuspec
文件中)中列出Lib.Analyzers
來實現這一點。
但我也希望用戶能夠在不需要時再次卸載Lib.Analyzers
。
AFAIK package 依賴項未在 package 管理器中列為單獨的包,以下在 package 管理器控制台中不起作用:
PM> Install-Package Lib
...
PM> Uninstall-Package Lib.Analyzers
Uninstall-Package : Package 'Lib.Analyzers' to be uninstalled could not be found in project 'ClassLibrary1'
有沒有辦法做到這一點? 我在文檔中找不到任何東西。
我想盡量減少新用戶的摩擦,即他們應該得到Lib.Analyzers
提供的幫助,而不必記住每次安裝Lib
時都要安裝分析器。
但我也希望Lib.Analyzers
不會被強加給可能不再需要它們的有經驗的用戶。
我目前的解決方法是將Lib
重命名為Lib.Core
,刪除其對Lib.Analyzers
的依賴關系,並創建第三個名為Lib
的元包,將兩者捆綁在一起,得到以下依賴關系圖:
Lib
|- Lib.Core
'- Lib.Analyzers
新用戶總是會安裝Lib
,而有經驗的用戶只能安裝Lib.Core
。
然而, Lib
實際上是一個相當小的庫,所以這個解決方案感覺有點“過度設計”。
這里有一個關於可選依賴項的 GitHub 問題,已關閉。
所以不幸的是,目前不支持它,而且似乎將來也不支持。
rohit21agrawal給出了以下接近的理由:
有幾個原因 - 我們正在關閉一年多沒有活躍的錯誤,第二,這不符合我們在不久的將來為 NuGet 制定的計划。
如果您對此功能有充分的理由,您可以打開一個新問題,我們會考慮它。
也許您的問題是“強有力的案例” 。
話雖如此,您的解決方法似乎還不錯。 更多文檔/介紹問題。
如果這是您問題的根源,還有一個選項可以抑制特定分析器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.