当使用不同的独立.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 插件,我想将其发布/部署到现有的框架文件夹。该应用程序旨在扫描新插件并加载它们。