资源文件放在哪里?

Jan*_*roň 5 c# visual-studio-2010

如果项目有这些目录

  MyProject
   - bin
     - Debug
       - program.exe
     - Release
       - program.exe
   - program.cs
Run Code Online (Sandbox Code Playgroud)

在哪里放置data.csv将由程序解析的文件?我想将它放在与程序相同的文件夹中。我必须将其复制到调试和发布目录吗?或者,还有更好的方法?


编辑 我还需要将整个目录复制到输出目录,但 Visual Studio 没有此选项。我在这里找到了答案。如果目录很大(就像我的情况一样),可以使用/Dxcopy 属性仅复制较新的文件来解决。就我而言,我将此命令添加到构建后事件(项目->属性)并且效果很好:

xcopy "$(ProjectDir)\FolderToCopy" "$(TargetDir)\FolderToCopy" /D /E /I /Q /Y
Run Code Online (Sandbox Code Playgroud)

xcopy 语法

chi*_*oro 4

您可以将其放置在项目中的任何位置(bin/obj 文件夹内除外)。为了将其复制到输出中,您只需将其标记为“复制到输出目录”:

  • 将文件包含在项目中
  • 单击解决方案资源管理器中的文件
  • F4
  • 在属性窗口中,将设置“复制到输出目录”更改为“始终复制”或“更新时复制”中的任意一个

这将列出项目 msbuild 文件(.csproj 文件)中的文件,如下所示:

<None Include="data.csv">
  <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
Run Code Online (Sandbox Code Playgroud)

相对于:

<None Include="data.csv" />
Run Code Online (Sandbox Code Playgroud)

如果您没有按照上面的说明更改设置。

正如我附注的那样,您可能希望避免使用术语“资源”,因为它通常用于嵌入到程序集中的文件(例如 .resx 文件)。可以想象,您也可以对 data.csv 文件执行此操作:它不是将其复制到输出目录,而是嵌入到您的程序集中。不过,您需要以不同的方式访问该文件。要实现这一点,只需将“构建操作”更改为“嵌入式资源”,而不是设置“复制到输出目录”设置。