.NET: Load two version of the same DLL
Ok, it was actually a lot easier than I imagined.
m_Assembly1 = Reflection.Assembly.LoadFile(IO.Path.Combine(System.Environment.CurrentDirectory, "Old Version\Some.dll"))
m_Assembly2 = Reflection.Assembly.LoadFile(IO.Path.Combine(System.Environment.CurrentDirectory, "New Version\Some.dll"))
Console.WriteLine("Old Version: " & m_Assembly1.GetName.Version.ToString)
Console.WriteLine("New Version: " & m_Assembly2.GetName.Version.ToString)
m_OldObject = m_Assembly1.CreateInstance("FullClassName")
m_NewObject = m_Assembly2.CreateInstance("FullClassName")
From here on out I used late binding and/or reflection to run my tests.
Check out Activator.CreateInstance() on MSDN. Code samples within.
http://msdn.microsoft.com/en-us/library/ms224132.aspx
Here is a guide to do that:
extern alias oldVer;
extern alias newVer;
and when you compile:
csc /r:oldVer=Somepath\ClassLibrary.dll /r:newVer=AnotherPath\ClassLibrary.dll program.cs
or in Visual Studio change the "aliases" field in the property tab of your project references