Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.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#_.net Assembly_Appdomain - Fatal编程技术网

C# 程序集是否需要物理存在于磁盘上?

C# 程序集是否需要物理存在于磁盘上?,c#,.net-assembly,appdomain,C#,.net Assembly,Appdomain,我(可能和我之前的许多人一样)尝试使用不推荐的Assembly.Load(Byte[])方法将程序集加载到应用程序域中,在该应用程序域中,所述程序集数据通过网络传输,因此技术上没有物理存在。我想我已经经历了几乎每一个角落,试图让这个工作,但我非常确信这是不可能的(至少可能使用我目前的方法) 我想我的问题是,为了加载程序集,它是否必须位于应用程序的CodeBase/GAC中?如果是,为什么会这样?不,这不是真的。您可以从字节数组加载程序集;该阵列可以来自任何地方。例如,我以前使用过一个系统,该系统

我(可能和我之前的许多人一样)尝试使用不推荐的
Assembly.Load(Byte[])
方法将程序集加载到应用程序域中,在该应用程序域中,所述程序集数据通过网络传输,因此技术上没有物理存在。我想我已经经历了几乎每一个角落,试图让这个工作,但我非常确信这是不可能的(至少可能使用我目前的方法)

我想我的问题是,为了加载程序集,它是否必须位于应用程序的
CodeBase
/
GAC
中?如果是,为什么会这样?

不,这不是真的。您可以从字节数组加载程序集;该阵列可以来自任何地方。例如,我以前使用过一个系统,该系统从作为二进制字段存储在数据库中的程序集中加载插件


(也许你应该问另一个问题,包括你所面临的问题,这样你就可以让这个工作正常进行:-)

当然不行。您只需要.dll文件的实际字节[]数据,在调用加载方法后,它将在CLR中加载。一切正常。

尝试该操作时会发生什么?似乎仍在磁盘上搜索程序集的实际副本。这很奇怪-如果仍然希望您将文件保存在磁盘上,那么使用
Byte[]
覆盖有什么意义?它已被弃用?似乎找不到任何东西表明…啊,我已经为此奋斗了这么久。“现在它似乎神奇地起作用了。”克里斯。因此,如果您键入
Assembly.Load
intellisense说该方法已被弃用,那么这就很奇怪了。但是,如果您键入
Assembly.Load(…
它是未预先确定的。嗯。我将不得不进行更多的实验。