Хорошо, я столкнулся со следующей проблемой, которая подняла бровь.
По разным причинам у меня есть настройка тестирования, в которой классы тестирования в TestingAssembly.dll зависят от класса TestingBase в BaseTestingAssembly.dll.
В то же время TestBase ищет собственный встроенный ресурс и вызывающую сборку
.
Итак, моя BaseTestingAssembly содержала следующие строки ...
public class TestBase {
private static Assembly _assembly;
private static Assembly _calling_assembly;
static TestBase() {
_assembly = Assembly.GetExecutingAssembly();
_calling_assembly = Assembly.GetCallingAssembly();
}
}
Статический, с тех пор как я рассчитывал, эти сборки будут одинаковыми на протяжении всего жизненного цикла приложения, поэтому зачем пересчитывать их при каждом тесте.
Однако при выполнении этого я заметил, что для _assembly и _calling_assembly были установлены значения BaseTestingAssembly, а не BaseTestingAssembly и TestingAssembly соответственно.
Установка переменных на нестатические и инициализация их в обычном конструкторе исправила это, но я запутался, почему это случилось, чтобы начать это. Я думал, что статические конструкторы запускаются при первом обращении к статическому члену. Это могло быть только из моей TestingAssembly, которая должна была быть вызывающей. Кто-нибудь знает, что могло произойти?