Dotnet 发布到同一文件夹

Dotnet Publish to Same Folder

独立 .csproj 项目 built/published 使用 dotnet publish 到同一文件夹时的预期行为是什么?

假设 Alpha.csproj 可能需要 1.0.0 的 NuGet 包 foo,并且该项目 Bravo.csproj 可能需要相同 NuGet 依赖项的版本 2.0.0。我担心的是,对这些不同项目的两次单独 dotnet publish 调用指向同一个目标文件夹,将导致 foo 依赖项被覆盖...从而破坏部署。

我知道 NuGet 通常将其二进制文件存储在子文件夹中,通常以版本号区分,但将依赖项直接放入主发布文件夹中也很常见。因此,从表面上看,存在意外冲突的空间。

到目前为止,我解决这个预期问题的方法是将两个项目放入同一个解决方案中,然后发布解决方案。我认为单个发布命令足以解决差异(将 foo 的不同依赖版本存储到不同的子文件夹中)。但是,如果这些项目在不同的解决方案中呢?

我说“预期的”问题是因为我实际上并没有花时间尝试它。我的截止日期很紧,无力处理运行时出现的潜在隐蔽错误;我不想通过“艰难的方式”找到我的问题的答案。

了解这种动态对我来说特别重要,因为我正在构建 .Net Core 3.1 插件,我想 publish/deploy 到现有框架文件夹。该应用程序旨在扫描新插件并加载它们。

预期的行为是最后发布的项目将覆盖发布目录中的现有文件,从而导致依赖版本冲突。

Single-file deployments 在以更大的整体部署大小为代价发布到同一目录时更有可能不产生冲突。