在哪里可以将补充文件放在Windows服务中?

时间:2017-09-13 21:26:43

标签: c# windows-services filepath

好的,这是情况。我写了一个Windows服务。将其作为“控制台”应用程序进行测试已经显示了有希望的结果。

不幸的是,我无法弄清楚文件的放置位置。我有一些对应用程序至关重要的JSON数据。它在一个文件中。我宁愿不详细讨论,但只知道它必须在一个文件中,这是至关重要的。它不是配置文件,但绝对需要它。

无论如何,我已将该文件添加到我的Windows服务项目中。问题是,在安装服务时,我无法确定用于将文件放在正确位置的正确代码和设置。

这只是我写过的第二个Windows服务,第一个(多年前)不需要补充文件。

我在Windows 7的Visual Studio 2015中编写了该服务。我将在办公室的本地计算机上对其进行测试,但最终会在生产计算机上进行测试。

请帮忙吗?关于我应该把文件放在哪里以及如何在代码中引用它的任何想法?

我看到一个网站说我应该使用以下内容:

System.IO.Directory.SetCurrentDirectory(System.AppDomain.CurrentDomain.BaseDirectory);

但是当我这样做时,这似乎没有帮助:

filePath = Environment.CurrentDirectory + "\\myfile.ext"

在这些情况下,文件路径从来就不是我的强项。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

我没有对此进行测试,但我认为没有理由不这样做:

internal string FilePath = 
    System.IO.Path.Combine(
      System.AppDomain.CurrentDomain.BaseDi‌​rectory, 
      Settings.Default.JsonFile);

答案 1 :(得分:0)

好吧,看起来我弄明白了。我做了以下事情:

  1. 在我的实际"服务"项目,我添加了我需要的文件。
  2. 在"程序"服务方面,我做了以下事情:

    System.IO.Directory.SetCurrentDirectory(System.AppDomain.CurrentDomain.BaseDirectory);

    ServiceBase [] ServicesToRun;

    ServicesToRun = new ServiceBase [] {     新的MyService() };

    ServiceBase.Run(ServicesToRun);

  3. 在监控所有内容的班级中,我有以下内容:

    internal string FilePath = Directory.GetCurrentDirectory() + "\\" + Settings.Default.JsonFile;
    

    然后我做了一些与这个主题无关的其他调整,但上面似乎就是这样做了。