【发布时间】:2021-10-11 14:04:04
【问题描述】:
当使用dotnet publish 将不同的独立 .csproj 项目构建/发布到同一文件夹时,预期的行为是什么?
想象一下Alpha.csproj 可能需要 NuGet 包 foo 在 1.0.0,而该项目 Bravo.csproj 可能需要相同 NuGet 依赖项的 2.0.0 版本。我担心这些不同项目上的两个单独的dotnet publish 调用,指向同一个目标文件夹,将导致foo 依赖被覆盖......从而破坏部署。
我知道 NuGet 经常将其二进制文件存储在子文件夹中,通常以版本号来区分,但它也很常见将依赖项直接放在主发布文件夹中。因此,从表面上看,存在意外冲突的空间。
到目前为止,我解决这个预期问题的方法是将两个项目放在同一个解决方案中,然后发布解决方案。我认为单个发布命令足以解决差异(将 foo 的不同依赖版本存储到不同的子文件夹中)。但是,如果这些项目处于不同的解决方案中怎么办?
我说“预期”的问题是因为我实际上并没有花时间尝试它。我的期限很紧,无法处理运行时出现的潜在隐蔽错误;我不想以“艰难的方式”发现我的问题的答案。
了解这种动态对我来说尤其重要,因为我正在构建 .Net Core 3.1 插件,我希望将其发布/部署到现有的框架文件夹。该应用程序旨在扫描新插件并加载它们。
【问题讨论】:
-
当两个项目在同一个解决方案中时,build会理清依赖关系(并使用更高版本的库)。但是对于两个不同解决方案的项目,我想你会不走运。同样,如果依赖
foov1.0.0 和 v2.0.0 有不兼容的更改。
标签: c# .net-core nuget dotnet-publish