У меня есть класс, который динамически загружает сборку так:
Assembly asm = Assembly.LoadFile(args[1]);
runner.RunTestOnAssembly(asm);
затем другой класс запускает тест для этой сборки:
foreach (var cspecType in asm.GetTypes())
{
RunTestOnType(cspecType);
}
Загруженная сборка ссылается на другие сборки в той же папке, [Debug \ Tests] , а программа, которая загружает сборку, находится в папке [Debug] .
Загруженная сборка (CalcSpecAsm):
public class CalcSpec : CSpecFacade<ICalc>
{
public CalcSpec()
: base(new Calc())
{
}
}
Ссылочная сборка (CalcAsm):
public class Calc : ICalc
{
/// <summary>
/// Initalisation constructor
/// resets the Total value.
/// </summary>
public Calc()
{
Total = 0;
}
.....
На CSpecFacade есть ссылка в другой сборке.
И теперь проблема в том, что, если я загружаю сборку CalcSpecAsm, я получаю ошибку сборки loaderError в GetTypes (), что она не может разрешить ссылку на сборку CalcAsm.
Проблема в этой строке кода: public class CalcSpec : CSpecFacade<ICalc>
Если я удаляю обобщенный аргумент ICalc и инициализирую его в конструкторе, он работает отлично, но это не то, что мне нужно.
НО: если я копирую программу loaderAssembly в [Debug \ Test] , а затем запускаю ее, все работает нормально.
Как решить проблему и чем она вызвана?