将C#程序使用的数据文件定位在公共位置,而不考虑运行时上下文



在从开发到最终用户分发的生命周期中,C#可执行文件可以驻留在3个不同的位置:

  • {项目目录}\bin\Debug
  • {项目目录}\bin\Release
  • {最终用户安装目录}

我的应用程序有一个网页和一些辅助文件,我喜欢把它们放在名为\video的子目录中,就在包含可执行文件的目录下。我真正不想做的是在上面列出的3个目录之间复制子目录。换句话说,显然我不想以结束

  • {项目目录}\bin\Debug\video
  • {项目目录}\bin\Release \video
  • {最终用户安装目录}\视频

每次\video中的文件发生更改时,都会进行固有的重新复制。

将数据文件与应用程序一起分布在一个集中目录中的方便的总体策略是什么?该目录将在应用程序分布时添加到设置程序中?我希望每次在Visual Studio 2012 IDE中运行应用程序时,不必添加build任务来将数据文件复制到\Debug\Release子目录中。如果我在构建任务期间忘记复制文件,这会导致潜在的错误,如果有很多文件,尤其是大文件,可能会造成混乱。

有没有一种方法可以构建顶级数据路径,方便地检测3种不同的运行时上下文中的每一种?当相对路径传递给另一个方法时,我不介意是否必须用一个规范化数据路径的方法包装所有相关数据路径。下面是一个使用名为fixRelPath()的虚构方法的示例,该方法将在将相对路径传递给名为openFile():的示例方法之前正确扩展相对路径

openFile(fixRelPath(".\video\temp.html"));

您应该将文件放在AppData目录中。

每个用户:

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);

共享:

Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);

相关内容

  • 没有找到相关文章

最新更新