Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
动态加载的程序集应该位于什么位置,以及如何在C#中引用它?_C# - Fatal编程技术网

动态加载的程序集应该位于什么位置,以及如何在C#中引用它?

动态加载的程序集应该位于什么位置,以及如何在C#中引用它?,c#,C#,这里我要寻找的是我应该期望/建议动态dll出现在哪里 我应该使用位置CurrentDirectory+AssemblyName进行加载吗 还是应该使用location Assembly.CodeBase属性 我正在尝试使用Assembly.LoadFile(路径) 基本上,我只想在将该程序集添加到解决方案时加载该程序集 它与我的应用程序一起提供,而不是标准的.net dll实现这一点的最简单方法是确保dll位于探测路径(搜索)中,并且(作为Tuzo noets)使用汇编.Load。如果您想从路径

这里我要寻找的是我应该期望/建议动态dll出现在哪里

我应该使用位置CurrentDirectory+AssemblyName进行加载吗

还是应该使用location Assembly.CodeBase属性

我正在尝试使用Assembly.LoadFile(路径)

基本上,我只想在将该程序集添加到解决方案时加载该程序集


它与我的应用程序一起提供,而不是标准的.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中的某个位置?更多关于你想做什么的信息会有所帮助。嘿,纳雷什,有点离题了-你能取消删除这个问题并用你如何解决它来回答它吗?(我会尽快删除此评论)。