问题:我有Project_A和Project_B。 Project_B依赖于Project_A。通过将Project_A添加为nuget包引用(Project_A作为nuget包发布并包含在Project_B中),Project_B依赖项已满。最后,Project_B被打包为最终用户的nuget参考。当他们下载依赖于Project_A的Project_B时,最终用户会在nuget包资源管理器中看到Project_A nuget包。
目标:
预期结果:我的最终用途应该只能单独下载Project_B引用而不能下载Project_A引用。 Project_A引用应自动下载为Project_B的依赖项。
实际结果:我的最终用户不必在他们的项目中下载Project_A nuget包参考。
从项目创建两个NuGet包的事实并不真正相关。最后,您有两个包,Project_A和Project_B以及Project_B依赖于Project_A。
我可以从nuget包资源管理器中隐藏Project_A nuget包吗?
nuget.org具有未列出的包的概念,因此用户不会在搜索结果中看到它们。但是,如果将包发布到不同的NuGet提要,则取决于服务器实现。但是,请小心这样做,因为如果它导致恢复未列出的包有问题,可能会给用户带来不好的体验。
我可以限制最终用户如何下载Project_A参考吗?
老实说,我的回答是你为什么要这样做?如果开发人员下载Package_A会有什么危害?你想解决什么问题,是否有不同的方法来解决同样的问题?想象一下,你是使用软件包的开发人员,但它的依赖性似乎缺失了,这会让你感觉如何?
要直接回答您的问题,您只需将Project_A包发布到私有nuget Feed即可。但是在这种情况下,如果Package_B在公共源上,那么只有有权访问私有源的人才能使用它,对于其他人来说,NuGet将无法恢复其依赖性。
编辑:还要考虑具有安全合规性过程的组织。如果开发人员使用您的公共包,然后他们审核他们的依赖关系并看到您的包具有奇怪的隐藏依赖关系,那将显得非常可疑。