2010-02-02 80 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文件进行标准配置。