Visual Studio C# 项目生成时复制项目资源目录到生成目录

关键词:C#, C#项目, csproj, Visual Studio, VS, MSBuild, output, debug, 项目生成, 复制
关联搜索标题:
C# Visual Studio 项目生成时复制项目资源文件到生成目录
Visual Studio:如何“复制到输出目录”而不复制文件夹结构?
Visual Studio 如何复制项目里的某个文件夹(及其子目录和文件)到输出文件夹?

博主我作为一个过来人,有必要给光速入门的新手指明学习方向

微软官网 MSBuild 开发文档: https://docs.microsoft.com/zh-cn/visualstudio/msbuild/msbuild

其实完全可以避免使用预处理宏(什么 copy, xcopy 这些傻快直 的命令),直接修改 csproj 文件达成目的。
以下操作,都是在项目根目录下的 csproj 文件里折腾。

直接拷贝某个目录下的所有文件(递归,包括子目录,但不包含目录结构)到输出目录

<Target Name="CopyMyFolder" BeforeTargets="PrepareForBuild">
    <ItemGroup>
      <SomeFolder Include="MyFolder\**"></SomeFolder>
    </ItemGroup>
    <Copy SourceFiles="@(SomeFolder)" DestinationFolder="$(OutputPath)" SkipUnchangedFiles="True"></Copy>
 </Target>

直接拷贝整个目录(递归,包括它自己、它的所有子目录及其文件,包含目录结构)到输出目录

<ItemGroup>
  <None Include="MyFolder\**">
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  </None>
</ItemGroup>

直接拷贝某个目录下的所有子对象(递归,不包括自己,只包括它的所有子目录及其文件,包含目录结构)到输出目录

<Target Name="CopyMyFolder" BeforeTargets="PrepareForBuild">
  <ItemGroup>
    <SomeFolder Include="MyFolder\**" />
  </ItemGroup>
  <Copy SourceFiles="@(SomeFolder)" 
        DestinationFiles="$(OutputPath)\%(RecursiveDir)%(Filename)%(Extension)" 
        SkipUnchangedFiles="True">
  </Copy>
</Target>
  • 有网友可能会问:
  1. 搞这么多,有什么用?
  2. copy/xcpoy 命令简单粗暴,它不香吗?
  • 但你在开发中是否会遇到:
  1. C/C++编译出来的DLL库,尽管在Visual Studio里引用了,可是编译输出的文件夹里却没有!
  2. 正在开发的项目是基于某个SDK开发的,和第三方软件做对接。但是每次手动Copy最新生成的二进制文件到第三方软件根目录下才能测试,就很烦。
  3. 通过预处理的宏,简单粗暴的 copy/xcopy 命令,每次编译生成都要完整走一遍完整复制(有重的直接覆盖)。机械硬盘用户表示很伤:复制太慢了。固态硬盘用户表示也很伤:又增加了没有必要的写入,消耗了本来就可以节省的硬盘寿命!

通过学习本篇博客,你将可以彻底解决 从 项目文件直接复制到 编译输出的文件夹 不能全自动的问题!同时可以抛弃不能智能跳过相同文件的 copy/xcopy 命令!

  • 15
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值