nuget是否支持一个包引用另一个包

nuget是否支持一个包引用另一个包,nuget,nuget-package,Nuget,Nuget Package,Nuget(最新版本,ie 3.4.4-rtm-1321)是否允许一个包引用/包含另一个包作为依赖项?我不能让它工作,我想知道我是否在追逐蝴蝶: VS2015解决方案包含ProjectA和ProjectB。ProjectC是独立的,采用不同的解决方案 我的解决方案中有从ProjectA(builds DLL-A)生成的PackageA ProjectA引用ProjectB(构建DLL-B),也引用PackageC(包含DLL-C) 项目B还引用了PackageC(包含DLL-C) 但是,当我在另

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

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

我的解决方案中有从ProjectA(builds 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
nuget.exe pack.csproj-Prop-Configuration=Release-Prop-Platform=x86-IncludeReferencedProjects
这意味着,如果我在解决方案中安装PackageA,它不会带来所有依赖项(如DLL-C),它们必须单独安装。我是错过了什么还是这个坏了


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

这正是-IncludeReferenced项目所做的

includereferencedprojects-指示生成的包应 将引用的项目作为依赖项或作为 包裹如果引用的项目具有相应的nuspec文件 与项目同名,则引用的项目为 作为依赖项添加。否则,引用的项目将添加为 包装的一部分

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


希望这能对您有所帮助。

ProjectC不在解决方案中(为什么应该/会是?),因此在ProjectA中引用它的唯一方法是作为一个包。如果我必须将PackageA和PackageC都添加到目标解决方案中,这是没有意义的。例如,我如何知道PackageA需要DLL-C?