我有一个托管DLL(用C ++ / CLI编写),它包含C#可执行文件使用的类。在类的构造函数中,我需要访问引用DLL的可执行文件的完整路径。在实际的应用程序中,我知道我可以使用Application对象来执行此操作,但是如何从托管DLL执行此操作?
答案 0 :(得分:14)
Assembly.GetCallingAssembly()
或
Assembly.GetExecutingAssembly()
或
Assembly.GetEntryAssembly()
视您的需要而定。
然后使用Location或CodeBase属性(我永远不记得是哪一个)。
答案 1 :(得分:5)
@leppie:谢谢 - 这是我需要的指针。
为了将来参考,在C ++ / CLI中,这是有效的实际语法:
String^ appPathString = Assembly::GetEntryAssembly()->Location;
GetExecutingAssembly()
提供了DLL的名称
GetCallingAssembly()
返回类似System.Windows.Forms
GetEntryAssembly
返回完整路径,类似于Win32下的GetModulePath()
。