【问题标题】:How to octopus deploy different versions of the dependent assembly in different environments章鱼如何在不同环境下部署不同版本的依赖程序集
【发布时间】:2015-11-26 14:30:03
【问题描述】:

我们有一个项目可以使用某个 DLL 的两个不同版本。我们需要将其部署在两个不同的环境中。使用哪个版本的 DLL 应该取决于环境。

一个建议的解决方案是复制整个代码库并基于这两个代码库创建章鱼部署配置。

我强烈反对这个,但仍然没有解决问题的办法。

我认为二进制重定向不起作用,因为我无法在配置中指定 dll 路径,当然,我不能将这两个文件放在同一个目录中。

有什么想法吗?

【问题讨论】:

  • 你想通过根据环境部署不同的版本来完成什么?通常,Octopus 将相同的文件部署到每个环境,因此采用不同的方法可能会更好。
  • 我认为您尝试做的事情是可能的 - 但可取。就您的观点而言,我也反对这一点,但我不完全理解为什么需要部署两个不同版本的 DLL - 这似乎违反直觉。你能再解释一下你的情况吗?
  • 我们有 MS Exchange 传输代理。代码库可以并且将保持不变,唯一的区别在于版本 2013 和 2016 引用的 MS dll。根据环境(2013 和 2016),我们希望引用不同的 dll。 dll名称相同,版本不同。
  • 通过动态程序集加载或通过 GAC 而不是 Octopus 可能会更好。如果你决定做 Octopus,你可能需要做一个 Powershell 脚本。

标签: octopus-deploy


【解决方案1】:

可以通过 powershell 脚本轻松解决,作为 Octopus 部署步骤。例如,您的项目可能有两个文件:

YourFile.dll
YourFile.v2.dll

然后你的 powershell 脚本,post-step,(伪代码)将看起来类似:

if($OctopusParameters["environment"] == "Dev") {
   File.Delete("YourFile.dll");
   File.Rename("YourFile.v2.dll", "YourFile.dll");
}

我同意这是一个非常不寻常的问题,并且可能表明代码有异味。

【讨论】:

    猜你喜欢
    • 2014-02-11
    • 2018-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-22
    • 1970-01-01
    相关资源
    最近更新 更多