我在C#中有一个服务,它使用config.xml文件进行配置。 我想与服务可执行文件一起显示xml。但我似乎无法理解在运行时在哪里找到服务exe安装位置,以便我可以找到/加载配置。
请帮助。
答案 0 :(得分:3)
静态方法Assembly.GetEntryAssembly()
将为您提供对条目程序集(.exe文件)的引用,Location
属性将为您提供文件的位置:
Assembly.GetEntryAssembly().Location
另一种方法是,如果您知道条目程序集中的类型,则使用Type.Assembly
来获取对程序集的引用:
typeof(Program).Assembly.Location
如果只需要目录路径,请使用静态Path.GetDirectoryName()
方法。
偏离主题:您是否考虑过内置于.NET的configuration API?我不是说在你的具体情况下这会更好,但我想在推出你自己的配置框架之前值得考虑。
答案 1 :(得分:0)
你的意思是你在visual studio中构建一个项目,你想知道你编译的EXE保存在哪里?您可以在“[project folder] \ bin \ debug”中找到它。
或者您的意思是您已经在计算机上安装了服务,并且您想知道它的运行位置?为此,您可以右键单击该服务并选择属性。这将显示文件的路径。
答案 2 :(得分:0)
您的可执行文件位于AppDomain.CurrentDomain.BaseDirectory。
我的一些服务项目加载了这样的自定义log4net配置。
var file = new FileInfo( AppDomain.CurrentDomain.BaseDirectory + "/" + filename );
if (file.Exists) {
XmlConfigurator.ConfigureAndWatch( file );
}
相同的服务使用普通的app.config文件进行标准配置。