【问题标题】:Where to place resource files?资源文件放在哪里?
【发布时间】:2014-07-04 11:33:32
【问题描述】:

如果项目有这些目录

  MyProject
   - bin
     - Debug
       - program.exe
     - Release
       - program.exe
   - program.cs

将由程序解析的data.csv 文件放在哪里? 我想把它和程序放在同一个文件夹中。我必须将它复制到调试和发布目录吗?还是有更好的办法?


编辑 我还需要将整个目录复制到输出目录,但 Visual Studio 没有此选项。我找到了答案here。如果目录很大(如我的情况),则可以使用/D xcopy 属性来解决仅复制较新文件的问题。就我而言,我将此命令添加到构建后事件(Project->Properties)中,效果很好:

xcopy "$(ProjectDir)\FolderToCopy" "$(TargetDir)\FolderToCopy" /D /E /I /Q /Y

(xcopy syntax)

【问题讨论】:

  • 将它放在项目文件夹中您喜欢的任何位置。请记住在属性中将其更改为“内容”,以便将其复制到您的构建文件夹中。

标签: c# visual-studio-2010


【解决方案1】:

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

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

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

<None Include="data.csv">
  <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>

相对于:

<None Include="data.csv" />

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

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

【讨论】:

    【解决方案2】:

    Visual Studio 的默认方法是在MyProject 正下方创建一个Resources 文件夹。

    然后,在您的项目设置中,您转到Resources 选项卡,其中有一个链接可以为您生成资源文件。它通常会在Properties 文件夹中为您创建一个Resources.resx 文件。

    你可以在那里添加你的资源。

    如果您不想将其编译到程序集中,而是将其放在它旁边,您可以通过设置Copy to output directory 属性来包含项目文件夹中的文件(甚至是链接文件)。它会为您将文件复制到bin 文件夹中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-05
      • 1970-01-01
      • 1970-01-01
      • 2012-01-25
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多