【发布时间】:2011-11-19 19:30:08
【问题描述】:
我想查找给定 .NET 应用程序中使用的库的完整路径。
这些都是引用的程序集 (以AssemblyNames 获得) 和P/Invoke/DllImported函数 (仅作为 dll 名称获得).
所以基本上我正在搜索这两种方法的内容,其中executablePath 是第三方.NET 应用程序的路径,它可能与我的程序完全不同。
static string ResolveAssemblyPath(AssemblyName name, string executablePath)
{
// ...
}
static string ResolveDllPath(string name, string executablePath)
{
// ...
}
重要的是,这些找到的库在确定其完整路径的过程中不执行任何代码!(DllMain,模块初始化程序,...)
这在任何情况下都有可能吗?这不是猜错的选择。
【问题讨论】:
-
哦,一切都应该在 .NET4 客户端配置文件下完成。
-
有什么理由不使用反射器或类似工具来分解它们的内容?
-
@Yahia - 这确实给了我
"kernel32.dll"或"{mscorlib, Version=4.0.0.0, [...]}"之类的东西,我需要该库的完整路径。 (这些只是可以硬编码的示例......) -
您的意思是像
CheckAsm或其他各种工具? -
@Ritch Melton - 在这个方向上,也是为了解析本机 dll,它真的不应该执行任何其他代码,当然在这里以编程方式 ;-)
标签: c# .net dll assemblies assembly-resolution