Я пытаюсь добавить стороннюю библиотеку к моему Outlook 2013, добавив написанную на С#. Он состоит из двух компонентов:.Net-оболочки и самой C++.
Я ссылаюсь на.net-оболочку в проекте добавления и добавил C++ lib в качестве копии на ресурсе сборки.
По-видимому, среда выполнения Office помещает каждый.Net lib, на который ссылается плагин в отдельной папке, за исключением C++ lib, на который он не ссылается. И плагин не может найти C++ lib, потому что он должен находиться в одной папке с исполняемой dll.
Пример расположения DLL-плагинов:
C:\Users\UserName\AppData\Local\assembly\dl3\TMGBBYEC.3JC\QE21JQR6.YRW\4a3206fe\4acfc661_ccc6cf01\SomeLibName.dll
Любые идеи, как это исправить?
Для определения местоположения dll попробуйте следующее:
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;