动态加载的程序集应该位于什么位置,以及如何在C#中引用它?
这里我要寻找的是我应该期望/建议动态dll出现在哪里 我应该使用位置CurrentDirectory+AssemblyName进行加载吗 还是应该使用location Assembly.CodeBase属性 我正在尝试使用Assembly.LoadFile(路径) 基本上,我只想在将该程序集添加到解决方案时加载该程序集动态加载的程序集应该位于什么位置,以及如何在C#中引用它?,c#,C#,这里我要寻找的是我应该期望/建议动态dll出现在哪里 我应该使用位置CurrentDirectory+AssemblyName进行加载吗 还是应该使用location Assembly.CodeBase属性 我正在尝试使用Assembly.LoadFile(路径) 基本上,我只想在将该程序集添加到解决方案时加载该程序集 它与我的应用程序一起提供,而不是标准的.net dll实现这一点的最简单方法是确保dll位于探测路径(搜索)中,并且(作为Tuzo noets)使用汇编.Load。如果您想从路径
它与我的应用程序一起提供,而不是标准的.net dll实现这一点的最简单方法是确保dll位于探测路径(搜索)中,并且(作为Tuzo noets)使用
汇编.Load
。如果您想从路径之外(而不是在GAC中)加载dll,那么它会变得很棘手。这里有Assembly.LoadFile
/Assembly.LoadFrom
,但是您需要担心;您可以很快发现动态代码使用的DLL存在问题
另一种简化方法是使用单独的AppDomain
;这个新的AppDomain
可以有一个不同的base/bin-允许您引入正确的DLL(并在需要时卸载它)。您可以使用CreateInstanceAndUnwrap
(使用MarshalByRefObject
代理在两个AppDomain
之间建立远程连接),或者(对于一次性使用),只需使用ExecuteAssembly
执行新的AppDomain
我在中介绍了这些点的范围,我应该使用CurrentExecuting目录的CodeBase属性来获取位置, 因为可以在任何时候使用
System.Environment.CurrentDirectory=somelocation.您能更具体一点吗?您要加载什么?应用程序旁边提供的东西(如插件)或是否要加载标准的.net dll?是否有理由不使用Assembly.load(assemblyName)并将程序集放置在探测路径或GAC中的某个位置?更多关于你想做什么的信息会有所帮助。嘿,纳雷什,有点离题了-你能取消删除这个问题并用你如何解决它来回答它吗?(我会尽快删除此评论)。