public AppDomain createAppDomain(string appDomainName, AppDomainSetup appDomainSetup)
        {
            try
            {
                if (DI.appDomainsControledByO2Kernel.ContainsKey(appDomainName))
                {
                    DI.log.error("in createAppDomain, appDomainName provided has already been used, appDomainNames must be unique: {0}", appDomainName);
                }
                else
                {
                    DI.log.info("Creating AppDomain {0} with Base Directory {1}", appDomainName,
                                appDomainSetup.ApplicationBase);
                    // ensure target directory exits
                    O2Kernel_Files.checkIfDirectoryExistsAndCreateIfNot(appDomainSetup.ApplicationBase);

                    // give our appDomain full trust :)
                    var permissionSet = new PermissionSet(PermissionState.Unrestricted);

                    DI.appDomainsControledByO2Kernel.Add(appDomainName, this);

                    //Create domain
                    appDomain = AppDomain.CreateDomain(appDomainName, null, appDomainSetup, permissionSet);
                    //        appDomain.AssemblyResolve += new ResolveEventHandler(assemblyResolve);
                    BaseDirectory = appDomain.BaseDirectory;
                    return(appDomain);
                }
            }
            catch (Exception ex)
            {
                DI.log.ex(ex, "could not load createAppDomain: " + appDomainName);
            }
            return(null);
        }
 public static string    o2Temp2Dir(this string tempFolderName, bool appendRandomStringToFolderName)
 {
     if (tempFolderName.valid())
     {
         if (appendRandomStringToFolderName)
         {
             return(PublicDI.config.getTempFolderInTempDirectory(tempFolderName));
         }
         else
         {
             var tempFolder = Path.Combine(PublicDI.config.O2TempDir, tempFolderName);
             O2Kernel_Files.checkIfDirectoryExistsAndCreateIfNot(tempFolder);
             return(tempFolder);
         }
     }
     return(PublicDI.config.O2TempDir);
 }