private IMetadataAssembly GetAssembly(string filename, out MetadataLoader loader)
        {
            var references = GetProjectReferences()
                             .ToArray();

            var compiledAssembly = GetAssembly(filename, references);
            var path             = GetTestDataFilePath2(filename).Directory;

            var referencePaths = references
                                 .Select(Path.GetDirectoryName)
                                 .Select(x => FileSystemPath.Parse(x));

            var resolverOnFolders = new AssemblyResolverOnFolders();

            resolverOnFolders.AddPath(path);

            foreach (var referencePath in referencePaths)
            {
                resolverOnFolders.AddPath(referencePath);
            }

            var assemblyPath = path.Combine(compiledAssembly);

            loader = new MetadataLoader(resolverOnFolders);
            var assembly = loader.TryLoadFrom(assemblyPath, x => true);

            Assert.That(assembly, Is.Not.Null, $"Cannot get metadata assembly: {filename}");

            return(assembly);
        }
        protected override void DoTest(Lifetime lifetime, IProject testProject)
        {
            var name = testProject.GetSubItems()[0].Location.Name;

            var testAssembly = GetVirtualTestDataFilePath(name);

            var resolve = new AssemblyResolverOnFolders();

            resolve.AddPath(testAssembly.Directory);

            using (WriteLockCookie.Create())
            {
                PrepareBeforeRun(testProject);
            }

            var discoveryManager = Solution.GetComponent <IUnitTestDiscoveryManager>();
            var assemblyExplorer = Solution.GetComponent <MspecTestExplorerFromArtifacts>();

            var source = new UnitTestElementSource(UnitTestElementOrigin.Artifact,
                                                   new ExplorationTarget(
                                                       testProject,
                                                       GetTargetFrameworkId(),
                                                       new MspecTestProvider()));

            using (var transaction = discoveryManager.BeginTransaction(source))
            {
                assemblyExplorer.ProcessArtifact(transaction.Observer, lifetime).Wait(lifetime);

                DumpElements(transaction.Elements, name + ".metadata");
            }
        }