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

时间:2011-11-19 19:30:08

标签: c# .net dll assemblies assembly-resolution

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

这些都是引用的程序集 (获取为AssemblyName s) P / Invoke / {{ 1}} ed函数 (仅作为dll名称获取)


所以基本上我正在搜索这两种方法的内容,其中DllImport是第三方.NET应用程序的路径,它可能与我的程序完全不同。 < / p>

executablePath

这些找到的库在确定其完整路径的过程中不执行任何代码非常重要!static string ResolveAssemblyPath(AssemblyName name, string executablePath) { // ... } static string ResolveDllPath(string name, string executablePath) { // ... } 模块初始化程序,... )

在每种情况下都可以吗?这不是猜错的选择。

1 个答案:

答案 0 :(得分:1)

这是可能的,但您需要复制Windows加载程序的搜索顺序,这对于本机和托管模块甚至Windows版本都有所不同。我已经看到它在各种博客中发布了不同级别的详细信息,但我手边没有。它似乎也记录在MSDN中,所以看看它是否适合你。

无论如何,如果猜错都不是你选择的问题,因为任何未来的Windows版本都可以扩展或修改搜索顺序,所以你不会向上兼容未来的Windows版本。

还有一些重定向Windows加载程序的规则,例如。通过清单或注册表,如果你想要完全覆盖,你也必须复制它。