Может ли загруженная DLL знать, где она находится? - PullRequest
2 голосов
/ 17 августа 2010

Я создаю DLL, которая используется Office.Когда Office работает с ним, я хотел бы определить, где он находится.Это возможно?

отл.кода в библиотеке DLL, когда он запускается в Office:

// should return C:\tmp\officeaddin.dll, 
// currently C:\Program Files\Microsoft Office\Office 12
MessageBox.Show(Application.StartupPath)   

Ответы [ 4 ]

3 голосов
/ 17 августа 2010

Следующее должно работать, даже если работает внутри Office:

Получение пути текущей сборки

(в основном сводится к Assembly.GetExecutingAssembly().Location, носм. ссылку выше для получения более подробной информации.)

2 голосов
/ 17 августа 2010

Если это библиотека .NET, вы должны использовать Assembly.GetExecutingAssembly().Location.Application.StartupPath показывает путь к основному приложению.

1 голос
/ 06 июля 2014

Это работает для меня:

Environment.CurrentDirectory

Так что вы можете просто установить строку, например:

Dim location as String = Environment.CurrentDirectory & "\"
0 голосов
/ 17 августа 2010

Когда DLL загружается, она вызывает DllMain с дескриптором экземпляра. Если вы реализуете эту функцию, вы можете записать дескриптор экземпляра DLL. После этого вы можете вызвать GetModuleFileName .

В .NET об этом позаботятся за вас. См. Этот вопрос и выбранный ответ для деталей.

...