Nuget安装相同解决方案项目的包

时间:2018-02-06 15:51:01

标签: visual-studio nuget

我有一个奇怪的场景。

假设我正在研究一种名为SOL的解决方案。 该解决方案有3个项目:A,B和C. 现在,项目A使用项目B和C作为项目参考,因为所有这3个项目共享相同的解决方案,并且所有这些项目都有nuget包,以便在其他解决方案中使用它们。

我有另一个名为SOL2的解决方案。 该解决方案有一个项目,我们称之为D. D使用SOL中的项目B和C作为nuget包,D有自己的nuget包。

问题是,来自SOL的项目A使用项目D. 当我想在项目A上安装项目D nuget时,它会自动将所有项目D的依赖项安装为nuget包,包括B和D,它们与A的解决方案相同,并且没有任何意义。

我知道我可以使用'Ignore Dependencies'选项,但是我可能会跳过所需的引用,这些引用不在A的相同解决方案上 (尝试想象一下100个引用的案例而不仅仅是2-3个。)

有没有办法阻止nuget只安装项目A的同一解决方案中的这些特定项目包?

我希望情况可以理解。

感谢。

1 个答案:

答案 0 :(得分:0)

  

问题是,来自SOL的项目A使用项目D.当我想在项目A上安装项目D nuget时,它会自动将所有项目D的依赖项安装为nuget包,包括B和D,与A的解决方案相同,并没有任何意义。

我需要指出的是,如果您将projectD nuget安装到projectA,则nuget依赖关系B和C将替换以前的项目引用{{1}和ProjectB的{​​{1}}。

如果您不想将项目引用替换为nuget引用,则应该阻止nuget仅安装项目A的同一解决方案中的这些特定项目包。这就是您所要求的。唯一直接的方法是使用projectC,但正如您所说,它也会忽略projectA所有依赖关系。要解决此问题,我可以考虑的解决方法是在创建nuget包Ignore Dependencies后删除依赖项projectD

您可以从Windows应用商店获取nuget包资源管理器并安装它:

enter image description here

然后使用nuget package explorer打开nuget包projectD,删除项目A的同一解决方案中这些特定项目包的依赖项,如projectB

enter image description here

在这种情况下,您可以阻止nuget仅安装项目A的同一解决方案中的这些特定项目包。

希望这有帮助。