AppDomain a = AppDomain.CreateDomain("test");
a.ExecuteAssembly("test.exe");
AppDomain 下的 ExecuteAssembly***,CreateInstance*** 几个函数必须要指定 assemblyFile 或 assemblyName 才能成功运行,,而且 assemblyFile 必须要放到程序当前目录下,或者AppDomainSetup中设置的目录,,不然就会提示找不到文件或其他错误。。
我不想有 assemblyFile 文件在磁盘上的存在。。直接在内存中加载 Assembly 并在应用程序域中执行。。我想实现这样
AppDomainSetup setup = new AppDomainSetup();
setup.ApplicationBase = @"E:\";
setup.ConfigurationFile = @"E:\config.xml";
setup.ApplicationName = "test";
setup.PrivateBinPath = @"E:\libs";
AppDomain a = AppDomain.CreateDomain("test", null, setup);
Assembly assembly = Assembly.Load(assembly字节数组);//字节数组到 assembly
让 assembly 不在磁盘上生成文件,并在 AppDomain 里面执行。
注:不是说反射的执行,反射我知道直接Invoke就可以呢,,关键是要在 应用程序域中执行。。
a.ExecuteAssembly("test.exe");
AppDomain 下的 ExecuteAssembly***,CreateInstance*** 几个函数必须要指定 assemblyFile 或 assemblyName 才能成功运行,,而且 assemblyFile 必须要放到程序当前目录下,或者AppDomainSetup中设置的目录,,不然就会提示找不到文件或其他错误。。
我不想有 assemblyFile 文件在磁盘上的存在。。直接在内存中加载 Assembly 并在应用程序域中执行。。我想实现这样
AppDomainSetup setup = new AppDomainSetup();
setup.ApplicationBase = @"E:\";
setup.ConfigurationFile = @"E:\config.xml";
setup.ApplicationName = "test";
setup.PrivateBinPath = @"E:\libs";
AppDomain a = AppDomain.CreateDomain("test", null, setup);
Assembly assembly = Assembly.Load(assembly字节数组);//字节数组到 assembly
让 assembly 不在磁盘上生成文件,并在 AppDomain 里面执行。
注:不是说反射的执行,反射我知道直接Invoke就可以呢,,关键是要在 应用程序域中执行。。
{
if (this == null)
{
throw new NullReferenceException();
}
if (assemblyName == null)
{
throw new ArgumentNullException("assemblyName");
}
return Activator.CreateInstance(assemblyName, typeName);
}不知道有没其他方法实现:不要有 assemblyFile 文件在磁盘上的存在。。直接在内存中加载 Assembly 并在应用程序域中执行。。
其实就是反射呢,,只不过要在反射外面加一个应用程序域,,加应用程序域 是为了给应用程序指定目录。 setup.ApplicationBase = @"E:\";
setup.ConfigurationFile = @"E:\config.xml";
setup.ApplicationName = "test";
setup.PrivateBinPath = @"E:\libs";