Я создал службу Windows в c # .Net 4.0.
В VS это прекрасно работает, я собрал проект и установил exe как сервис, который работает.
Я обнаружил, что при работе в качестве службы приложение не ссылается на файлы конфигурации приложения, которые я поместил в тот же каталог, что и exe службы.
Если я строго ввожу полный путь к файлу в коде, проблем не возникает, однако это не идеальное решение, так как пользователи могут устанавливать вещи где угодно.
Как сделать, чтобы приложение обращалось (искало) к файлам локально по отношению к EXE-файлу, а я не предполагаю, где находится служебная оболочка .Net.
Кажется, в Google ничего не помогает.
Пример
Работает:
var config =
ClassLib.XmlInterface.DeserializeConfiguration(
"C:\\Users\\Damo\\Documents\\Visual Studio 2010\\Projects\\FileDownloadService\\FileDownloadService\\bin\\Debug\\config.xml");
Не работает: (спор был локальным для EXE)
var config =
ClassLib.XmlInterface.DeserializeConfiguration(
"config.xml");