2016-12-22 27 views
0

У меня есть надстройка надстройки, в которой мне нужно загрузить пользовательскую dll с помощью DllImport. Я включил DLL в ресурсы проекта, и когда проект «опубликован», он копируется в папку «Ресурсы».Как найти расположение DLL, включенных в качестве ресурсов в надстройку надстройки для использования с DllImport

Моя проблема в том, что после того, как пользователь установит надстройку, я не знаю, где находятся DLL, которые я включил в ресурсы. Если бы я знал, я мог бы добавить это место в текущий путь поиска, и все будет работать.

Environment.SetEnvironmentVariable("PATH", Environment.GetEnvironmentVariable("PATH") + ";" + dllDirectory); 

Есть ли у кого-нибудь решение, или я все об этом не так?

ответ

1
//use CodeBase instead of Location because of Shadow Copy. 
string codebase = Assembly.GetExecutingAssembly().CodeBase; 
var vUri = new UriBuilder(codebase); 
string vPath = Uri.UnescapeDataString(vUri.Path + vUri.Fragment); 
string directory = Path.GetDirectoryName(vPath); 
if (!string.IsNullOrEmpty(vUri.Host)) directory = @"\\" + vUri.Host + directory; 
DllLocation = Path.Combine(directory, "Resources\\MyDll.dll"); 
+0

спасибо! Это был фрагмент кода, который я искал. –

+0

Если это ответит на ваш вопрос, отметьте его как таковой. Благодаря! –

 Смежные вопросы

  • Нет связанных вопросов^_^