我有一个奇怪的场景。
假设我正在研究一种名为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的同一解决方案中的这些特定项目包?
我希望情况可以理解。
感谢。
答案 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包资源管理器并安装它:
然后使用nuget package explorer打开nuget包projectD,删除项目A的同一解决方案中这些特定项目包的依赖项,如projectB
:
在这种情况下,您可以阻止nuget仅安装项目A的同一解决方案中的这些特定项目包。
希望这有帮助。