わかりましたので、眉をひそめた次の問題に遭遇しました。
さまざまな理由から、TestingAssembly.dll の Testing クラスが BaseTestingAssembly.dll の TestingBase クラスに依存するテスト セットアップがあります。その間に TestBase が行うことの 1 つは、それ自体と呼び出し元のアセンブリで特定の埋め込みリソースを探すことです。
したがって、私の 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 と TestingAssembly ではなく BaseTestingAssembly に設定されていることに気付きました。
変数を非静的に設定し、通常のコンストラクターで初期化するとこれが修正されましたが、なぜこれが始まったのか混乱しています。静的コンストラクターは、静的メンバーが初めて参照されたときに実行されると思いました。これは、呼び出し元である必要がある私の TestingAssembly からのみ可能でした。何が起こったのか知っている人はいますか?