Если файл конфигурации находится в том же каталоге, что и исполняемый файл, вы можете использовать:
string exePath = Assembly.GetExecutingAssembly().Location;
string configFileName = "config.txt";
string configFilePath = Path.Combine(Path.GetDirectoryName(exePath), configFileName);
РЕДАКТИРОВАТЬ:
GetExecutingAssembly()
должен был вернуть путь C:\Program Files\MyAddIn\your_plugin.dll
, поскольку он возвращает фактический путь к загруженной сборке, которая его вызывает.
Поскольку это не так, мы можем предположить, что MS Project на самом деле копирует вашу dll в локальный (и, возможно, временный) каталог перед загрузкойэто (....\AppData\Local\Assembly\...
путь).
Поскольку я не знаю почему и как MS Project делает это, самый безопасный способ решения вашей проблемы IДумаю, это сохранить расположение вашей папки Addin в реестре при установке.Если вы отправляете его в виде MSI, ваш установщик должен легко добавить раздел реестра, содержащий местоположение вашего файла плагина.Как это сделать, будет зависеть от того, как вы создадите свой MSI: vdproj?WiX?.
Затем в коде вашего плагина вы можете прочитать в реестре, чтобы получить ваш путь.