public void Resolvers_Correct_After_Standalone_Reference_Added() { void Verify(string path, ref CompilationAssemblyResolverDependencyContext dc , Action <CompositeCompilationAssemblyResolver, ICompilationAssemblyResolver[]> verify) { path = GetFullPath(path.AssertFileExists()); dc = dc ?? DefaultContext.AssertTrue(x => x.AssertNotNull().Context.AssertNotNull() != null); var ac = dc; ac.AssertSame(dc); ac.AddDependency(path.AssertFileExists()); var actualResolver = ac.Resolver.AssertNotNull(); // TODO: TBD: a deeper question here is this: should ReferenceAssemblyPathResolver/PackageCompilationAssemblyResolver happen with every added dependency? or just the first one? // TODO: TBD: might be worth reviewing the original code and determine how that was done... and/or contact the author(s) to determine the finer points... // With deeper levels simply walking lambda arguments to the next letters. actualResolver.AssertReflectedField(InternalResolvers, InternalResolversBindingFlags, verify); } CompilationAssemblyResolverDependencyContext actualContext = null; void Verification(CompositeCompilationAssemblyResolver v, ICompilationAssemblyResolver[] f) { f.AssertNotNull().AssertNotEmpty().AssertTrue(x => x.Length == 2); f[0].AssertNotNull().AssertIsType <CompositeCompilationAssemblyResolver>() .AssertReflectedField(InternalResolvers, InternalResolversBindingFlags , (CompositeCompilationAssemblyResolver w, ICompilationAssemblyResolver[] g) => { g.AssertNotNull().AssertNotEmpty().AssertTrue(x => x.Length == 2); g[0].AssertNotNull().AssertIsType <ReferenceAssemblyPathResolver>(); g[1].AssertNotNull().AssertIsType <PackageCompilationAssemblyResolver>(); }); f[1].AssertNotNull().AssertIsType <AppBaseCompilationAssemblyResolver>(); } var firstPath = KingdomSimpleCalculatorsPath.AssertNotNull().AssertNotEmpty(); // TODO: TBD: consider refactoring a general use private static method for use with both standalone and chaining dependencies... Verify(firstPath, ref actualContext, Verification); var expectedContextContext = actualContext.Context.AssertNotNull(); actualContext.AssertNotNull(); Verify(firstPath.AssertNotNull().AssertNotEmpty(), ref actualContext, Verification); actualContext.AssertNotNull().Context.AssertNotNull().AssertSame(expectedContextContext); expectedContextContext.AssertTrue( x => x.CompileLibraries.Any(y => HasLibrary(y, firstPath)) || x.RuntimeLibraries.Any(y => HasLibrary(y, firstPath)) ); }