private void SetupFusionStore(AppDomainSetup info) { if ((info.Value[0] == null) || (info.Value[1] == null)) { AppDomain defaultDomain = GetDefaultDomain(); if (this == defaultDomain) { info.SetupDefaultApplicationBase(RuntimeEnvironment.GetModuleFileName()); } else { if (info.Value[1] == null) { info.ConfigurationFile = defaultDomain.FusionStore.Value[1]; } if (info.Value[0] == null) { info.ApplicationBase = defaultDomain.FusionStore.Value[0]; } if (info.Value[4] == null) { info.ApplicationName = defaultDomain.FusionStore.Value[4]; } } } if (info.Value[5] == null) { info.PrivateBinPath = Environment.nativeGetEnvironmentVariable(AppDomainSetup.PrivateBinPathEnvironmentVariable); } if (info.DeveloperPath == null) { info.DeveloperPath = RuntimeEnvironment.GetDeveloperPath(); } IntPtr fusionContext = this.GetFusionContext(); info.SetupFusionContext(fusionContext); if (info.LoaderOptimization != LoaderOptimization.NotSpecified) { this.UpdateLoaderOptimization((int) info.LoaderOptimization); } this._FusionStore = info; }
private void SetupFusionStore(AppDomainSetup info) { // Create the application base and configuration file from the imagelocation // passed in or use the Win32 Image name. if(info.Value[(int) AppDomainSetup.LoaderInformation.ApplicationBaseValue] == null || info.Value[(int) AppDomainSetup.LoaderInformation.ConfigurationFileValue] == null ) { AppDomain defaultDomain = GetDefaultDomain(); if (this == defaultDomain) { // The default domain gets its defaults from the main process. info.SetupDefaultApplicationBase(RuntimeEnvironment.GetModuleFileName()); } else { // Other domains get their defaults from the default domain. This way, a host process // can use AppDomainManager to set up the defaults for every domain created in the process. if (info.Value[(int) AppDomainSetup.LoaderInformation.ConfigurationFileValue] == null) info.ConfigurationFile = defaultDomain.FusionStore.Value[(int) AppDomainSetup.LoaderInformation.ConfigurationFileValue]; if (info.Value[(int) AppDomainSetup.LoaderInformation.ApplicationBaseValue] == null) info.ApplicationBase = defaultDomain.FusionStore.Value[(int) AppDomainSetup.LoaderInformation.ApplicationBaseValue]; if (info.Value[(int) AppDomainSetup.LoaderInformation.ApplicationNameValue] == null) info.ApplicationName = defaultDomain.FusionStore.Value[(int) AppDomainSetup.LoaderInformation.ApplicationNameValue]; } } // If there is no relative path then check the // environment if(info.Value[(int) AppDomainSetup.LoaderInformation.PrivateBinPathValue] == null) info.PrivateBinPath = Environment.nativeGetEnvironmentVariable(AppDomainSetup.PrivateBinPathEnvironmentVariable); // Add the developer path if it exists on this // machine. if(info.DeveloperPath == null) info.DeveloperPath = RuntimeEnvironment.GetDeveloperPath(); // Set up the fusion context IntPtr fusionContext = GetFusionContext(); info.SetupFusionContext(fusionContext); // Set loader optimization policy if (info.LoaderOptimization != LoaderOptimization.NotSpecified) UpdateLoaderOptimization((int) info.LoaderOptimization); // This must be the last action taken _FusionStore = info; }