/// <summary>构造 /// </summary> /// <param name="ApplicationBase">插件的所在的目录(bin目录)</param> /// <param name="_PluginName">插件名称</param> /// <param name="configPath">config文件位置</param> /// <param name="_AppDomainID">域标识(唯一)</param> public SandBoxDynamicLoader(string ApplicationBase, string _PluginName, string configPath, int _AppDomainID) { PluginName = _PluginName; AppDomainID = _AppDomainID; AppDomainSetup setup = new AppDomainSetup(); setup.ApplicationBase = ApplicationBase; DirectoryInfo di=new DirectoryInfo(ApplicationBase); if (configPath != string.Empty) { setup.ConfigurationFile = configPath; } setup.PrivateBinPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "private"); setup.CachePath = setup.ApplicationBase; setup.ShadowCopyFiles = "true"; setup.ShadowCopyDirectories = setup.ApplicationBase+"\\SandBoxRunShadow"; AppDomain.CurrentDomain.SetShadowCopyFiles(); this.appDomain = AppDomain.CreateDomain(PluginName, null, setup); this.appDomain.SetData("APP_CONFIG_FILE", configPath); String name = Assembly.GetExecutingAssembly().GetName().FullName; try { this.channelChannel = (SandBoxChannel)this.appDomain.CreateInstanceAndUnwrap(name, typeof(SandBoxChannel).FullName); } catch (Exception ex) { } }
/// <summary>构造 /// </summary> /// <param name="ApplicationBase">插件的所在的目录(bin目录)</param> /// <param name="_PluginName">插件名称</param> /// <param name="configPath">config文件位置</param> /// <param name="_AppDomainID">域标识(唯一)</param> public SandBoxDynamicLoader(string ApplicationBase, string _PluginName, string configPath, int _AppDomainID) { PluginName = _PluginName; AppDomainID = _AppDomainID; AppDomainSetup setup = new AppDomainSetup(); setup.ApplicationBase = ApplicationBase; DirectoryInfo di = new DirectoryInfo(ApplicationBase); if (configPath != string.Empty) { setup.ConfigurationFile = configPath; } setup.PrivateBinPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "private"); setup.CachePath = setup.ApplicationBase; setup.ShadowCopyFiles = "true"; setup.ShadowCopyDirectories = setup.ApplicationBase + "\\SandBoxRunShadow"; AppDomain.CurrentDomain.SetShadowCopyFiles(); this.appDomain = AppDomain.CreateDomain(PluginName, null, setup); this.appDomain.SetData("APP_CONFIG_FILE", configPath); String name = Assembly.GetExecutingAssembly().GetName().FullName; try { this.channelChannel = (SandBoxChannel)this.appDomain.CreateInstanceAndUnwrap(name, typeof(SandBoxChannel).FullName); } catch (Exception ex) { } }