繁体   English   中英

nuget 在发布包时如何处理项目引用?

[英]How does nuget handle project references when publishing packages?

例如,假设我有 2x csproj称为AB

我们在B有一个项目参考A ,所以这里有一些场景,我找不到关于它如何处理的信息:

场景 1 - 当A不是已发布的包时发布B

我假设在这种情况下它会在尝试发布B时失败,因为它找不到对A nuget 合适的依赖项,尽管我在这里猜测所以澄清会很好。

场景 2 - 独立发布两个包

这是比较有趣的场景之一,因此,可以说没有什么改变A ,但我们要发布B ,它是如何从项目参考翻译A到上的NuGet依赖A 它是否只是在 nuget 中查找A的最新版本并为其添加依赖项?

场景 3 - 两个包一起发布

这是更常见的场景之一,在这种情况下,我可以看到,每当您在解决方案中发布一个包时,您还会为其他所有内容打包新版本,因此它们的版本号保持一致,这似乎对所有相同版本产生了依赖正如这里预期的那样。


因此,场景 1 和 2 是我感兴趣的主要部分,因为我们开始讨论是否应该在同一解决方案中的项目之间进行项目引用与包引用,如果您要对本地项目进行包引用,这似乎毫无意义,他们也可能在他们自己的回购中。 所以我只想知道 nuget 如何处理实际发布,以便我们可以继续讨论有关版本控制等的一些事实。

这取决于您为创建 nuget 包的命令提供的选项。 您可以独立创建它,也可以创建包含引用的项目。

要包含项目中引用的那些,例如B包含A您可以使用以下选项运行 pack 命令:

nuget pack -Prop Configuration=Release -IncludeReferencedProjects

选项 -Prop 使您能够设置在构建 .nupkg 时要应用的配置。 选项-IncludeReferencedProjects确实将所有引用的项目依赖项-IncludeReferencedProjects到 .nupkg 文件中。

如果您的项目依赖于另一个项目/类库,我会将它包含在创建的 nuget 包中。 否则你为什么要发布一个损坏的包。 如果您分别发布它们,那么 nuget 应该能够通过使用您在B包中指定的版本从 nuget 源安装它来解决依赖关系。 如果它找不到特定的参考版本,那么它就是一个损坏的包,正如 Jon 提到的,你必须小心地以正确的顺序或一起发布你的包。 如果您的 nuget 无法从 nuget 依赖项解析它,它将自动包含 dll(如果它们存在于您的解决方案中)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM