2010-02-02 79 views
0

我在C#中有一個服務,它使用config.xml文件進行配置。 我想在服務可執行文件的旁邊放置xml。但我似乎無法理解在運行時找到服務exe安裝位置的位置,以便我可以找到/加載配置。C#服務位置

請幫忙。

回答

3

靜態方法Assembly.GetEntryAssembly()會給你進入組件(.exe文件)的引用,以及Location屬性會給你的文件的位置:,

Assembly.GetEntryAssembly().Location 

另一種方法周圍,如果你知道在進入組裝的類型,是使用Type.Assembly得到一個參考裝配:

typeof(Program).Assembly.Location 

如果你只需要目錄路徑,使用靜態Path.GetDirectoryName()方法。

偏題:你認爲內置於.NET中的configuration API?我並不是說你的具體情況會更好,但我想在你自己的配置框架之前值得考慮。

0

您的意思是說您在Visual Studio中構建項目,並且想知道編譯後的EXE保存在哪裏?你會在「[project folder] \ bin \ debug」中找到它。

還是你的意思是你已經在你的計算機上安裝了一個服務,並且你想知道它從哪裏運行?要做到這一點,你可以右鍵點擊服務並選擇屬性。這將顯示文件的路徑。

0

您的可執行文件位於AppDomain.CurrentDomain.BaseDirectory

我的一些服務項目像這樣加載自定義log4net配置。

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

相同的服務使用普通的app.config文件進行標準配置。