public override void SetUp()
        {
            var mainAssembly       = GetType().Assembly;
            var productBinariesDir = mainAssembly.GetPath().Parent;
            var assemblyNameInfo   = AssemblyNameInfo.Parse(mainAssembly.FullName);

            var packageArtifactDummy = new ApplicationPackageArtifact(new SubplatformName(assemblyNameInfo.Name),
                                                                      new JetSemanticVersion(assemblyNameInfo.Version), "FakeCompanyName", "FakeCompanyName", DateTime.UtcNow,
                                                                      null, null, EmptyList <ApplicationPackageFile> .InstanceList,
                                                                      EmptyList <ApplicationPackageReference> .InstanceList);
            var metafile = productBinariesDir /
                           NugetApplicationPackageConvention.GetJetMetadataEffectivePath(packageArtifactDummy);

            metafile.DeleteWithMoveAside();

            var packages =
                AllAssembliesLocator.GetAllAssembliesOnLocallyInstalledBinariesFlat(
                    new ProductBinariesDirArtifact(productBinariesDir));

            var packageFiles = new HashSet <ApplicationPackageFile>(
                EqualityComparer.Create <ApplicationPackageFile>(
                    (file1, file2) => file1.LocalInstallPath == file2.LocalInstallPath,
                    file => file.LocalInstallPath.GetHashCode())
                );

            var packageReferences = new HashSet <ApplicationPackageReference>(
                EqualityComparer.Create <ApplicationPackageReference>(
                    (reference1, reference2) => string.Equals(reference1.PackageId, reference2.PackageId,
                                                              StringComparison.OrdinalIgnoreCase),
                    reference => reference.PackageId.GetHashCode())
                );

            using (var loader = new MetadataLoader(productBinariesDir))
            {
                ProcessAssembly(packages, productBinariesDir, loader, assemblyNameInfo, packageFiles,
                                packageReferences);
            }

            var packageArtifact = new ApplicationPackageArtifact(new SubplatformName(assemblyNameInfo.Name),
                                                                 new JetSemanticVersion(assemblyNameInfo.Version), "FakeCompanyName", "FakeCompanyName", DateTime.UtcNow,
                                                                 null, null, packageFiles, packageReferences);

            var fiMetadata = Lifetime.Using(lifeResolver =>
            {
                // All components together
                var resolver = new SerializedValuesResolver(lifeResolver, new[] { packageArtifact });

                // Components in a file
                // NOTE: this file can't be a [Transformed]SubplatformFileForPackaging because the components are built out of the transformed files themselves, and this would require another level of post-transformed files, which we would not yet like to do
                return(new ImmutableFileItem(
                           NugetApplicationPackageConvention.GetJetMetadataEffectivePath(packageArtifact),
                           StructuredStorages.CreateMemoryStream(storage => resolver.GetObjectData(storage))));
            });

            metafile.WriteStream(sout => fiMetadata.FileContent.CopyStream(sout));

            base.SetUp();
        }
        protected override JetHostItems.Packages CreateJetHostPackages(JetHostItems.Engine engine)
        {
            var mainAssembly       = GetType().Assembly;
            var productBinariesDir = mainAssembly.GetPath().Parent;

            TestUtil.SetHomeDir(mainAssembly);

            Lazy <ProductBinariesDirArtifact> productBinariesDirArtifact =
                Lazy.Of(() => new ProductBinariesDirArtifact(mainAssembly.GetPath().Directory));
            var jethostitempackages = new JetHostItems.Packages(engine.Items.Concat(
                                                                    new CollectProductPackagesInDirectoryFlatNoCachingHostMixin(productBinariesDirArtifact,
                                                                                                                                allass => new[] { allass.FindSubplatformOfAssembly(mainAssembly.GetNameInfo(), OnError.Throw) },
                                                                                                                                packages =>
            {
                var packageFiles = new HashSet <ApplicationPackageFile>(
                    EqualityComparer.Create <ApplicationPackageFile>(
                        (file1, file2) => file1.LocalInstallPath == file2.LocalInstallPath,
                        file => file.LocalInstallPath.GetHashCode())
                    );

                var packageReferences = new HashSet <ApplicationPackageReference>(
                    EqualityComparer.Create <ApplicationPackageReference>(
                        (reference1, reference2) => string.Equals(reference1.PackageId, reference2.PackageId,
                                                                  StringComparison.OrdinalIgnoreCase),
                        reference => reference.PackageId.GetHashCode())
                    );

                var assemblyNameInfo = AssemblyNameInfo.Parse(mainAssembly.FullName);
                using (var loader = new MetadataLoader(productBinariesDir))
                {
                    ProcessAssembly(packages, productBinariesDir, loader, assemblyNameInfo, packageFiles,
                                    packageReferences);
                }

                var packageArtifact = new ApplicationPackageArtifact(new SubplatformName(assemblyNameInfo.Name),
                                                                     new JetSemanticVersion(assemblyNameInfo.Version), CompanyInfo.Name, CompanyInfo.NameWithInc,
                                                                     DateTime.UtcNow, null, null, packageFiles, packageReferences);
                return(new AllAssembliesOnPackages(packages.Subplatforms
                                                   .Concat(new SubplatformOnPackage(packageArtifact, null, null)).AsCollection()));
            })));

            return(base.CreateJetHostPackages(engine));
        }