2017-02-28 45 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? –

相关问题