[英]Referencing nuget packages from nuget package
我有一個nuget包,它依賴於其他幾個包(例如Newtonsoft.Json
)。 程序包不打算用作類庫,它僅添加自定義MSBuild操作,因此程序包的結構如下所示:
-package CustomBuildAction
|-lib/net45/CustomBuildAction.dll
|-build/CustomBuildAction.targets
當我安裝包CustomBuildAction.targets
可以從csproj中正確引用它,但是當我嘗試運行build時,出現錯誤消息:
無法從程序集“ dll / CustomBuildAction.dll的路徑”加載“ CustomBuildAction”任務。 無法加載文件或程序集“ Newtonsoft.Json.dll,Version = ...”或其依賴項之一。
我已經將Newtonsoft.Json.dll
作為軟件包依賴項包含在nuspec文件中,nuget將其顯示為依賴項,但是MSBuild無法解決它。 對我來說,問題似乎出在我使用包文件夾中的相對路徑(相對於構建文件夾)從.targets文件引用CustomBuildAction.dll
:
../lib/net45/CustomBuildAction.dll
但是,此dll並非旨在放置在可以找到其所有依賴項的生成輸出文件夾中。 我該如何解決這個問題? 我應該在包中包含依賴項,還是有另一種解決方案?
MSBuild將從包含任務程序集的文件夾中解析任務依賴性。 不幸的是,這意味着您需要在CustomBuildAction.dll文件旁邊的NuGet包中包含Newtonsoft.Json.dll。
為防止程序集最終出現在生成輸出中,請將程序集放入程序包中的其他文件夾中。 例如,tools /,只要它不在lib中,就不會被視為可供參考的程序集。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.