2010-02-02 2 views
0

У меня есть служба в C#, для конфигурации используется файл config.xml. Я хочу уничтожить xml вместе с исполняемым сервисом. Но я не могу понять, где найти установленное место службы exe во время выполнения, чтобы я мог найти/загрузить конфигурацию.C# сервисное местоположение

Помогите пожалуйста.

ответ

3

Статический метод Assembly.GetEntryAssembly() даст вам ссылку на сборку ввода (файл с расширением .exe), а Location свойство даст вам расположение файла:

Assembly.GetEntryAssembly().Location 

Другой путь вокруг, если вы знать типа в сборке ввода, чтобы использовать Type.Assembly, чтобы получить ссылку на сборку:

typeof(Program).Assembly.Location 

Если вам нужно только путь к каталогу, используйте статический метод Path.GetDirectoryName().

Off Topic: вы считали configuration API встроенным в .NET? Я не говорю, что это будет лучше в вашем конкретном случае, но я думаю, это стоит рассмотреть, прежде чем переходить к вашей собственной конфигурации.

0

Вы хотите сказать, что вы строите проект в визуальной студии и хотите знать, где сохранен ваш скомпилированный EXE? Вы найдете это в «[папке проекта] \ bin \ debug».

Или вы имеете в виду, что у вас уже установлена ​​служба на вашем компьютере, и вы хотите знать, откуда она работает? Для этого вы можете щелкнуть правой кнопкой мыши по сервису и выбрать свойства. Это покажет путь к файлу.

0

Ваш исполняемый файл находится в AppDomain.CurrentDomain.BaseDirectory.

Некоторые из моих сервисных проектов загружают пользовательскую конфигурацию log4net, подобную этой.

var file = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + "/" + filename); 
if (file.Exists) { 
    XmlConfigurator.ConfigureAndWatch(file);  
} 

Эта же служба использует обычный файл app.config для стандартной конфигурации.

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