2015-09-01 41 views
11

我們有一個可以使用某個DLL的兩個不同版本的項目。我們需要在兩種不同的環境中部署這個功能正在使用哪個版本的DLL應取決於環境。如何章魚在不同的環境中部署不同版本的相關程序集

一個建議的解決方案是複製整個代碼庫並基於這兩個代碼庫創建章魚部署配置。

我強烈反對這一點,但仍然沒有解決問題的辦法。

我認爲二進制重定向不起作用,因爲我不能在配置中指定dll路徑,當然,我不能在同一個目錄中有這兩個文件。

任何想法?

+1

您想通過根據環境部署不同的版本來完成什麼?通常八達通將相同的文件部署到每個環境,因此採取不同的方法可能會更好。 – tspauld

+0

我認爲你想要做的事情是可能的 - 但*不是*可取的。至於你的觀點,我也會反對這一點,但我不完全理解爲什麼需要部署兩個不同版本的DLL - 這似乎違反直覺。你能解釋一下你的情況嗎? – osij2is

+0

我們有MS Exchange傳輸代理。 Codebase可以並且將保持不變,唯一的區別是在2013和2016版的參考MS dll中。根據環境(2013和2016),我們希望引用不同的dll。這些dll命名相同,版本不同。 –

回答

2

它可以通過PowerShell腳本輕鬆解決,作爲Octopus部署步驟。例如,您的項目可能有兩個文件:

YourFile.dll 
YourFile.v2.dll 

那麼你的PowerShell腳本,後續步驟,(僞)將尋找類似的東西:

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

我同意,雖然這是相當不尋常的問題,並可能表明代碼味道。

相關問題