nuget是否支持引用另一个包

时间:2017-02-28 13:17:48

标签: nuget nuget-package

Nuget(最新版本,即3.4.4-rtm-1321)是否允许一个包引用/包含另一个包作为依赖?我不能让这个工作,我想知道我是否在追逐蝴蝶:

VS2015解决方案包含ProjectA和ProjectB。 ProjectC是独立的,采用不同的解决方案。

我在我的解决方案中使用ProjectA(构建DLL-A)构建了PackageA。

ProjectA引用ProjectB(构建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

这意味着如果我在解决方案中安装我的PackageA,它不会带来它的所有依赖项(例如DLL-C),它们必须单独安装。我错过了一些东西还是坏了?

更新:我注意到PackageA lib文件夹不包含DLL-C,这可能指出问题的原因。

1 个答案:

答案 0 :(得分:0)

这正是-IncludeReferenced 项目所做的。

  

includereferencedprojects - 表示构建的包应该   包括引用的项目作为依赖项或作为一部分   包。如果引用的项目具有相应的nuspec文件   与项目同名,然后引用的项目是   作为依赖添加。否则,引用的项目将添加为   包的一部分。

因此,当您打包引用ProjectB(构建DLL-B)的ProjectA,并使用此选项引用 PackageC (包含DLL-C)时,NuGet将包含ProjectA DLL-A和引用ProjectB DLL-B,不包括ProjectC DLL-C。因为此选项仅包含参考项目而非。因此,如果您希望PackageA lib文件夹包含DLL-B和DLL-C,则需要设置ProjectA引用ProjectB,并且还引用 ProjectC 而不是PackageC。

希望能帮到你。