2015-09-01 39 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"); 
} 

我同意,虽然这是相当不寻常的问题,并可能表明代码味道。

相关问题