You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将文件复制到C#项目输出目录($TargetDir)指定文件夹且不保留原路径

解决方案:将资源直接复制到Bin指定目录,不保留原路径

方案1:修改项目文件(.csproj)规则

手动编辑项目文件,用更高效的复制策略替代CopyAlways:

  • 找到对应资源的<ItemGroup>节点,把原本的配置:
<ItemGroup>
  <Content Include="Resources\Grafics\**\*">
    <CopyToOutputDirectory>Always</CopyToOutputDirectory>
  </Content>
</ItemGroup>
  • 修改为:
<ItemGroup>
  <Content Include="Resources\Grafics\**\*">
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    <DestinationSubDirectory>Grafics\%(RecursiveDir)</DestinationSubDirectory>
  </Content>
</ItemGroup>

PreserveNewest只会复制更新过的文件,比CopyAlways更高效;%(RecursiveDir)会保留Grafics目录下的子结构,不需要的话直接写<DestinationSubDirectory>Grafics</DestinationSubDirectory>即可。

方案2:Post-build事件自动复制

用系统命令在编译完成后复制文件,灵活度拉满:

  • 打开项目属性 → 生成事件 → 编辑Post-build事件命令行
  • 输入以下命令(路径宏会自动适配你的项目):
robocopy "$(ProjectDir)Resources\Grafics" "$(TargetDir)Grafics" /E /XO
  • 参数说明:
    • $(ProjectDir)指向项目根目录,$(TargetDir)指向Bin输出目录
    • /E复制所有子目录(含空目录),不需要可去掉
    • /XO只复制比目标文件新的内容,避免重复复制

方案3:添加链接文件(适合少量资源)

如果资源文件不多,用链接方式绕过原路径:

  • 右键项目 → 添加 → 现有项 → 定位到Resources\Grafics下的文件 → 点击「添加」旁的下拉箭头,选「添加为链接」
  • 选中这些链接文件,在属性面板设置:
    • 复制到输出目录:如果较新则复制(对应PreserveNewest,比Always高效)
    • 输出目录:Grafics

编译时文件会直接复制到Bin/Grafics目录,不会带上原路径层级。

内容的提问来源于stack exchange,提问作者Michael Mora

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 21:21:00