2017-02-28 44 views
0

Nuget(最新版本,即3.4.4-rtm-1321)是否允許一個包引用/包含另一個包作爲依賴關係?我無法得到這個工作,我不知道我是否追逐蝴蝶:Nuget是否支持引用另一個包的一個包

一個VS2015解決方案包含ProjectA和ProjectB。 ProjectC是獨立的,採用不同的解決方案。

我有從ProjectA構建的PackageA(構建DLL-A)在我的解決方案中。

項目A引用項目B(構建DLL-B),並且還引用PackageC(含有DLL-C)

項目B還引用PackageC(含有DLL-C)。

但是,當我在另一個解決方案中安裝PackageA時,目標項目中只安裝/引用了DLL-A和DLL-B。我必須安裝PackageC才能引用DLL-C。

兩種封裝都建有對-IncludeReferencedProjects參數,如:

nuget.exe pack <project>.csproj -Prop Configuration=Release -Prop Platform=x86 -IncludeReferencedProjects 

這意味着如果我安裝我的程序包A的解決方案,它並沒有帶來它的依賴性(如DLL-C)與它和他們必須分開安裝。我錯過了什麼,或者這是壞的?

更新:我注意到PackageA lib文件夾不包含DLL-C,它可能指向問題的原因。

回答

0

這正是什麼-IncludeReferenced 項目呢。

includereferencedprojects - 表示內置包應該 包括引用的項目無論是作爲依賴或者作爲 包的一部分。如果引用的項目具有相應的nuspec文件,該文件 與項目具有相同的名稱,則該引用的項目將被添加爲 作爲依賴項。否則,被引用的項目將被添加爲包的一部分 。

所以,當你打包它引用項目B的項目A(構建DLL-B),並且還引用PackageC(含有DLL-C)用這個選項,的NuGet將包括項目A DLL-A和參考項目B DLL -B,不包括ProjectC DLL-C。因爲此選項僅包含參考項目而不是。因此,如果您想要PackageA庫文件夾包含DLL-B和DLL-C,則需要設置ProjectA引用ProjectB,並且還引用ProjectC而不是PackageC。

希望能幫助你。

+0

ProjectC不在解決方案中(爲什麼它應該是/?),因此在ProjectA中引用它的唯一方法是作爲一個包。如果我必須將PackageA和PackageC都添加到我的目標解決方案中,這沒有任何意義。例如,我如何知道PackageA需要DLL-C? –

相關問題