0

当使用不同的独立.csproj 项目构建/发布到同一个文件夹时,预期的行为是什么dotnet publish

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

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

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

我说“预期”的问题是因为我实际上并没有花时间尝试它。我的期限很紧,无法处理运行时出现的潜在隐蔽错误;我不想“艰难地”发现我的问题的答案。

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

4

1 回答 1

0

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

单文件部署在发布到同一目录时更有可能不会产生冲突,但会以更大的整体部署大小为代价。

于 2021-08-09T09:24:39.883 回答