您需要先调用,
CreateInstanceAndUnwrap然后代理对象才能在外部应用程序域中执行。
class Program{ static void Main(string[] args) { AppDomainSetup domaininfo = new AppDomainSetup(); domaininfo.Applicationbase = System.Environment.CurrentDirectory; Evidence adevidence = AppDomain.CurrentDomain.Evidence; AppDomain domain = AppDomain.CreateDomain("MyDomain", adevidence, domaininfo); Type type = typeof(Proxy); var value = (Proxy)domain.CreateInstanceAndUnwrap( type.Assembly.FullName, type.FullName); var assembly = value.GetAssembly(args[0]); // AppDomain.Unload(domain); }}public class Proxy : MarshalByRefObject{ public Assembly GetAssembly(string assemblyPath) { try { return Assembly.LoadFile(assemblyPath); } catch (Exception) { return null; // throw new InvalidOperationException(ex); } }}另外,请注意,如果您使用它,则
LoadFrom可能会遇到
FileNotFound异常,因为程序集解析器将尝试在GAC或当前应用程序的bin文件夹中查找要加载的程序集。
LoadFile而是使用加载任意程序集文件-
但请注意,如果执行此操作,则需要自己加载所有依赖项。



