【发布时间】:2009-10-19 12:44:14
【问题描述】:
我正在尝试加载程序集而不锁定文件。这些程序集可能是第三方程序集,因此我们不一定有权访问代码,其中一两个使用 Assembly.Location 从其目录中读取文件,这些文件可能依赖于这些文件。
我知道你可以通过影子复制来做到这一点,但让它正常工作真的很痛苦,某些论坛上的一些用户建议将程序集加载到字节数组中并使用 Assembly.Load(Byte[])超载。这在其中一个程序集尝试访问其父目录中的文件之前非常有效,因为 Assembly.Location 返回一个空字符串,而 Assembly.Codebase 返回加载程序集的应用程序的位置。
我可以做些什么来设置我正在加载的程序集的 Codebase 或 Location 属性吗?在 Codebase 和 Location 的 MSDN 文档中,它们被定义为可覆盖的属性 - 这是否意味着我可以从托管应用程序中覆盖它们?
【问题讨论】:
-
阴影应对可能是最好的解决方案...
标签: .net codebase assembly.load