2011-11-19 34 views
3

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

这些都是,引用的程序集(如AssemblyName S取得)P /调用/DllImport ED功能(如刚才所述的DLL名获得)


所以基本上我在寻找这两种方法的内容,其中executablePath是这可以从我的程序完全不同的第三方.NET应用程序的路径。

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

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

,这些发现库不决定其完整路径的过程中执行任何代码是很重要的!DllMain模块初始化 ...)

是,即使可能在任何情况下?这不是一个猜错的选择。

+0

哦,一切都应该在_.NET4_客户端配置文件下完成。 – ordag

+0

你有什么理由不使用反射器或类似工具来反汇编他们的内容? – Yahia

+0

@Yahia - 这确实给了我像''kernel32.dll''或'“{mscorlib,Version = 4.0.0.0,[...]}'',我需要该库的完整路径。 _(这些只是可能被硬编码的例子)_ – ordag

回答

1

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

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

也有规则重定向窗口加载程序,例如。通过清单或注册表,如果您需要确切的覆盖范围,您还必须复制这些清单或注册表。

相关问题