如何加载程序集比运行某些函数+得到结果和卸载

时间:2012-03-14 11:09:07

标签: .net reflection f# appdomain

F#1.9.9,OS - WinXP 我试图通过两个代码版本来做到这一点但在两种情况下都会出错。

更新。

"D:\Sources\ATProjectChecker\ATProjectChecker\tests\asms"上的目录包含FSharp.Core.dllmscorlib.dll

SerializationException: type is not allowed (my translation from russian)
"TestLoader+cross_dlg@135,ATProjectChecker, Version=0.0.0.0, Culture=neutral,
PublicKeyToken=null".

let load_run_unload path = 
let dlg () : unit = 
    let name = System.Reflection.AssemblyName.GetAssemblyName(path)
    let asm = System.Reflection.Assembly.LoadFile path
    //let asm = System.Reflection.Assembly.ReflectionOnlyLoad(name.FullName)
    //let run = asm.GetType("Test").GetMethod("run")
    //let run () = run.Invoke(null, [||])
    //ignore( run() )
    ()
let dsetup = new System.AppDomainSetup()
dsetup.ApplicationBase <- @"D:\Sources\ATProjectChecker\ATProjectChecker\tests\asms" //__SOURCE_DIRECTORY__
dsetup.ShadowCopyFiles <- "true"

let evil = System.AppDomain.CurrentDomain.Evidence
let tmp_domain = System.AppDomain.CreateDomain("TmpDomain", evil, dsetup)

let cross_dlg = new System.CrossAppDomainDelegate( dlg )
tmp_domain.DoCallBack( cross_dlg )

1 个答案:

答案 0 :(得分:0)

加载程序集时,

FileNotFoundException在无法加载依赖DLL的实例中抛出。

可能你真正的问题是你的一个依赖,而不是test

相关问题