我在C#中有一个服务,它使用config.xml文件进行配置。 我想在服务可执行文件的旁边放置xml。但我似乎无法理解在运行时找到服务exe安装位置的位置,以便我可以找到/加载配置。C#服务位置
请帮忙。
我在C#中有一个服务,它使用config.xml文件进行配置。 我想在服务可执行文件的旁边放置xml。但我似乎无法理解在运行时找到服务exe安装位置的位置,以便我可以找到/加载配置。C#服务位置
请帮忙。
静态方法Assembly.GetEntryAssembly()
会给你进入组件(.exe文件)的引用,以及Location
属性会给你的文件的位置:,
Assembly.GetEntryAssembly().Location
另一种方法周围,如果你知道在进入组装的类型,是使用Type.Assembly
得到一个参考装配:
typeof(Program).Assembly.Location
如果你只需要目录路径,使用静态Path.GetDirectoryName()
方法。
偏题:你认为内置于.NET中的configuration API?我并不是说你的具体情况会更好,但我想在你自己的配置框架之前值得考虑。
您的意思是说您在Visual Studio中构建项目,并且想知道编译后的EXE保存在哪里?你会在“[project folder] \ bin \ debug”中找到它。
还是你的意思是你已经在你的计算机上安装了一个服务,并且你想知道它从哪里运行?要做到这一点,你可以右键点击服务并选择属性。这将显示文件的路径。
您的可执行文件位于AppDomain.CurrentDomain.BaseDirectory。
我的一些服务项目像这样加载自定义log4net配置。
var file = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + "/" + filename);
if (file.Exists) {
XmlConfigurator.ConfigureAndWatch(file);
}
相同的服务使用普通的app.config文件进行标准配置。