C # Carrega diferentes versões do assembly para o mesmo projeto

Estou criando alguma ferramenta que executa várias operações como o NUnit. Dentro dessa ferramenta eu abro o assembly .dll e invoco métodos para executar algum teste.

Tudo está indo bem até o momento eu preciso recarregar .dll com o reinício do programa. A idéia é que, quando a ferramenta é executada, copiamos o assembly necessário para alguma pasta temporária e chamamos a partir daí. Se precisar recarregar, copio outro para outra pasta temporária e tento carregar o recém copiado de outra pasta e carregá-lo para o objeto de montagem anterior

  ExecutingAssembly = Assembly.LoadFrom(AssemblyFullPath); 

Mas o meu problema é que depois de alterar AssemblyFullPath para um novo e chamar Assembly.LoadFrom ele retorna apenas a montagem antiga que foi carregado pela primeira vez, mas não o segundo! Talvez o problema seja que não podemos carregar vários conjuntos com diferentes versões? Qual é a solução?