private void DoEnsurePackageLoaded(PackageMetadata packageInfo)
        {
            var packageRepository      = PackageRepositoryFactory.Default.CreateRepository(packageSourcePath.AbsoluteUri);
            var packageManager         = new NuGet.PackageManager(packageRepository, GetCacheFolderPath());
            var packageId              = packageInfo.PackageKey;
            var packageSemanticVersion = packageInfo.ToSemanticVersion();
            var corrId = Guid.NewGuid();

            this.LogPackageOperation(packageId, packageSemanticVersion, "Package needed", corrId);

            var currentPackages = packageManager.LocalRepository.GetPackages().Where(p => p.Id == packageId).ToList();

            var installedPackage = EnsurePackageInstalled(currentPackages, packageManager, packageId, packageSemanticVersion, corrId);

            EnsureMultiplePackagesRespected(currentPackages, packageManager, packageId, packageSemanticVersion, corrId);
            EnsureMainAssemblyLoadedInAppDomain(packageManager.PathResolver, installedPackage, packageInfo, corrId);
        }