public AppDomain CreateDomain(IBundleContext context)
{
string binpatch = Path.GetDirectoryName(context.Bundle.Location);
AppDomainSetup info = new AppDomainSetup();
DirectoryInfo dirinfo = new DirectoryInfo(binpatch);
if (String.Equals(dirinfo.Name.ToLower(), "bin"))
{
info.ApplicationBase = dirinfo.Parent.FullName;
}
else
{
info.ApplicationBase = binpatch;
}
if (!String.IsNullOrEmpty(AppDomain.CurrentDomain.DynamicDirectory))
{
info.ShadowCopyDirectories = Path.Combine(info.ApplicationBase, @"cache");
info.ShadowCopyFiles = "true";
info.PrivateBinPath = binpatch;
}
string domainName = "Bundle-" + context.Bundle.Id.ToString().PadLeft(3, '0');
AppDomain domain = AppDomain.CreateDomain(domainName, AppDomain.CurrentDomain.Evidence, info);
Interlocked.Increment(ref this.bundleAppDomains);
//Assembly[] asses = domain.GetAssemblies();
return domain;
}