Ok, entonces me encontré con el siguiente problema que levantó una ceja.Assembly.GetCallingAssembly() y constructores estáticos?
Por diversas razones, tengo una configuración de prueba donde las clases de prueba en un TestingAssembly.dll dependen de la clase TestingBase en BaseTestingAssembly.dll. Una de las cosas que el TestBase hace mientras tanto es buscar un determinado recurso incrustado en su propia y el conjunto de llamadas
Así que mi BaseTestingAssembly contenía las siguientes líneas ...
public class TestBase {
private static Assembly _assembly;
private static Assembly _calling_assembly;
static TestBase() {
_assembly = Assembly.GetExecutingAssembly();
_calling_assembly = Assembly.GetCallingAssembly();
}
}
estático ya que pensé , estos ensamblajes serían los mismos a lo largo de la vida útil de la aplicación, entonces, ¿por qué molestarse en volver a calcularlos en cada prueba?
Al ejecutar esto, sin embargo, noté que tanto _assembly como _calling_assembly se estaban configurando en BaseTestingAssembly en lugar de BaseTestingAssembly y TestingAssembly, respectivamente.
Al establecer las variables como no estáticas y tenerlas inicializadas en un constructor normal se corrigió esto, pero no estoy seguro de por qué sucedió esto. Pensé que los constructores estáticos se ejecutan la primera vez que se hace referencia a un miembro estático. Esto solo podría haber sido de mi TestingAssembly, que entonces debería haber sido la persona que llama. ¿Alguien sabe lo que pudo haber pasado?
¿por qué entonces el conjunto de llamadas no es nulo? –
¿Sería eso más útil? :) –
No, parece que eso tendría sentido –