簡體   English   中英

發布 .net 標准庫及其所有依賴項?

[英]Publish .net standard library with all it's dependencies?

我創建了一個動態加載庫並執行它的主類的系統。 一切正常,我遇到的問題是如何發布此 DLL 及其所有依賴項。 由於沒有可執行項目引用它,我必須手動檢索依賴項:嘗試加載庫,檢查所需的 DLL,轉到 NuGet 緩存文件夾,復制庫,​​再試一次,檢查它是否抱怨更多依賴項等等直到它擁有所有必需的庫。

這是一個真正的痛苦,我還沒有找到任何關於如何做到這一點的信息,有可能還是我堅持這個?

該庫是一個 .net 標准 2.0 庫,我之前使用 .net classic 這樣做過,輸出文件夾始終包含所有必需的庫,即使是來自 NuGet 包的庫,但使用 .net 標准,有些東西已經改變,現在只有來自正在復制引用的項目,沒有將引用的 NuGet 包復制到輸出文件夾。

干杯。

在撰寫本文時,它看起來像是設計使然,並且有很多關於它的大驚小怪和混淆,請參閱GitHub 上記錄的問題

此外,在為引用項目 B 的項目 A 發布 NuGet 包時,
B 成為 A 中的 NuGet 依賴項; B 的程序集不包含在 A 的 NuGet 包中。

我通過發布我自己的 NuGet 包來處理它。

我只是不喜歡為項目 B 提供 NuGet 包,如果該包僅與項目 A 一起使用/由項目 A 使用,因為它將單獨出現在我的 NuGet 提要中。

嘗試:

dotnet publish

所有依賴庫都應復制到發布輸出文件夾。

這是發布 DLL 的實用且輕松的解決方案:

因此,經過一段時間的斗爭,我想出了一個更優雅的解決方案。 我測試了這種方法,並部署了一個帶有許多外部依賴項的插件的完整構建到 Ubuntu 18.04,它運行完美。

創建一個類型為 Console Application 而不是類庫的新項目。 將所有庫代碼文件放入控制台應用程序並添加依賴項。 擺脫類庫項目(您不再需要它)。 最后,發布控制台應用程序。 您將獲得一個包含所有依賴項的 DLL。 您可以像使用任何其他 DLL 一樣使用此 DLL。

我建議將控制台應用程序項目命名為“Library”,並添加一個 README 來記錄它並不是真正的應用程序,即使該項目被配置為構建為一個應用程序。

暫無
暫無

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

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