我应该将补充文件放在 Windows 服务中的什么位置?

Where do I put supplemental files in a Windows Service?

好的,情况是这样的。我写了一个 Windows 服务。将其作为 "console" 应用程序进行测试已显示出可喜的结果。

不幸的是,我不知道把文件放在哪里。我有一些对应用程序至关重要的 JSON 数据。它在一个文件中。我不想对此进行过多的详细说明,但只知道它必须在一个文件中,这很关键。它不是配置文件,但绝对需要它。

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

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

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

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

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

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

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

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

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

非常感谢任何帮助。

好的,看来我明白了。我做了以下事情:

  1. 在我实际的 "Service" 项目中,我添加了我需要的文件。
  2. 在服务的"program"中,我做了以下操作:

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

    ServiceBase[] ServicesToRun;

    ServicesToRun = new ServiceBase[] { 新我的服务() };

    ServiceBase.Run(ServicesToRun);

在监控所有内容的 class 中,我有以下内容:

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

然后我做了一些与这个主题无关的其他调整,但上面的内容似乎可以解决问题。

我还没有测试过这个,但我看不出它为什么不起作用:

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