Как осьминог развертывает различные версии зависимой сборки в разных средах

У нас есть проект, который может использовать две разные версии определенной DLL. Нам нужно, чтобы это было развернуто в двух разных средах. Какая версия DLL используется, должна зависеть от среды.

Одним из предлагаемых решений является копирование всей базы кода и создание конфигураций развертывания осьминогов на основе этих двух кодовых оснований.

Я категорически против этого, но до сих пор не имею решения проблемы.

Я думаю, что двоичное перенаправление не будет работать, потому что я не могу указать путь к dll в конфиге, и, конечно, я не могу иметь эти два файла в одном каталоге.

Любые идеи?

Ответ 1

Это легко решить с помощью powershell script, как шаг развертывания Octopus. Например, ваш проект может иметь два файла:

YourFile.dll
YourFile.v2.dll

Тогда ваша powershell script, post-step, (псевдокод) будет выглядеть примерно так:

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

Я согласен с тем, что это довольно необычная проблема, и может указывать на запах кода.