解析.net应用程序使用的库路径

本文关键字:路径 net 应用程序 解析 | 更新日期: 2023-09-27 18:15:16

我想找到给定中使用的库的完整路径。净应用程序。

它们都是引用的程序集(作为AssemblyName s获得) p/Invoke/DllImport ed函数(仅作为dll名称获得)


基本上我在搜索这两个方法的内容,其中executablePath是第三方。net应用程序的路径可以与我的程序完全不同

static string ResolveAssemblyPath(AssemblyName name, string executablePath)
{
    // ...
}
static string ResolveDllPath(string name, string executablePath)
{
    // ...
}

重要的是,这些找到的库在确定其完整路径的过程中不执行任何代码! (DllMain 模块初始化器,…)

这在任何情况下都是可能的吗?

解析.net应用程序使用的库路径

这是可能的,但您需要复制windows加载器的搜索顺序,这对于本机和托管模块,甚至windows版本都是不同的。我在不同的博客上看到过不同层次的细节,尽管我手头没有。它似乎也在MSDN中有记录,所以看看它是否适合你。

无论如何,如果你没有选择猜错,你就有问题了,因为任何未来的windows版本都可以扩展或修改搜索顺序,所以你将无法向上兼容未来的windows版本。

也有重定向windows加载器的规则,例如:通过清单或注册表,如果您想要精确的覆盖,您也必须复制清单或注册表。