尝试在运行时加载dll。使用标准的MarshalByRefObject调用新AppDomain中的Load。继续从任何程序集加载调用{Assembly中获取FileNotFoundException。加载(字节)/ LoadFile(dllPath)/ LoadFrom(dllPath)}。还使用中性/空AppDomainSetup。
该DLL存在。而且我有正确的道路。甚至可以在调用任何Assembly.Load__方法之前读取字节。无论是将预读字节还是dll路径发送到适当的Load方法,它都告诉我找不到由AssemblyName指定的文件,并出现以下错误:
FileNotFoundException: Could not load file or assembly: 'AClassLibrary, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
程序集是一个简单的DLL,不引用我自己的任何代码-仅引用.NET基本内核(即没有任何无关的依赖项)。当它显然是在嵌套清单中找到文件和AssemblyName时,为什么说找不到文件?我没有将AssemblyName传递给任何负载,但它正在传达AssemblyName。 ???
任何帮助都非常感谢。非常感谢。
编辑(一些答案,更多问号):
好吧,在阅读了更多相关内容之后,似乎必须设置运行时以查找程序集的特定目录(通过AppDomainSetup属性:.ApplicationBase,.PrivateBinPath等)。另外,当我从主应用程序项目中引用动态DLL项目时,该问题也得到解决。
因此,如果必须事先为特定程序集设置应用程序域(通过AppDomainSetup),则如何将多个程序集加载到单个应用程序域中?没有所有的设置,没有办法直接从任何给定的程序集文件中直接加载吗?如果我希望用户能够在安装后将库添加到所需目录中怎么办?