gpt4 book ai didi

.net - Assembly.Load(Byte [])和Assembly.Location/Assembly.Codebase

转载 作者:行者123 更新时间:2023-12-02 04:18:06 27 4
gpt4 key购买 nike

我正在尝试加载程序集而不锁定文件。这些程序集可以是第三方程序集,因此我们不必访问代码,其中一两个程序集可以使用Assembly.Location从其目录中读取文件(可能依赖于它们)。

我知道您可以通过“阴影复制”来执行此操作,但是要使其正常工作确实是一个痛苦,并且某些论坛上的一些用户建议将程序集加载到字节数组中并使用Assembly.Load(Byte [])重载。在这些程序集之一尝试访问其父目录中的文件之前,这非常有用,因为Assembly.Location返回空字符串,而Assembly.Codebase返回加载程序集的应用程序的位置。

我有什么办法可以设置我正在加载的程序集的Codebase或Location属性?在有关代码库和位置的MSDN文档中,它们被定义为可覆盖的属性-是否意味着我可以从托管应用程序中覆盖它们?

最佳答案

可以使用AppDomainSetup.ApplicationBase吗?还是需要为每个加载的装配定义该路径?

编辑:使用文件名很容易定义代码库:

AssemblyName assemblyRef = new AssemblyName();
assemblyRef.CodeBase = assemblyFile;
Assembly assembly = Assembly.Load(assemblyRef);

也许您可以使用 AppDomain.AssemblyLoadAssembly.ModuleResolve事件,但我对此表示怀疑。

关于.net - Assembly.Load(Byte [])和Assembly.Location/Assembly.Codebase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1588490/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com