关键词: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 命令!

Visual Studio C# 项目生成时复制项目资源目录到生成目录相关推荐

  1. visual studio编译linux,在 Visual Studio 中配置 Linux MSBuild C++ 项目

    在 Visual Studio 中配置 Linux MSBuild C++ 项目Configure a Linux MSBuild C++ project in Visual Studio 10/16 ...

  2. 使用Visual Studio 创建新的Web Part项目

    使用Visual Studio 创建新的Web Part项目 Web Part是你将为SharePoint创建的最常见的对象之一.它是平台构建的核心基块. 1. 管理员身份打开Visual Studi ...

  3. Visual Studio 2022重命名解决方案和项目

    Visual Studio 2022重命名解决方案和项目 1.重命名解决方案 2.重命名项目名 3.修改程序集名称及命名空间 4.全局替换项目名 5.修改项目文件夹名称 6.修改.sln文件 7.修改 ...

  4. 在Visual Studio中使用C#脚本(CSX脚本)生成代码

    目录 介绍 C#脚本(CSX文件) CSX脚本示例 MyProgram.cs MyScript.csx 使用C#REPL(CSI.EXE)运行CSX脚本 程序集引用 NuGet软件包 从PowerSh ...

  5. vs2017c语言一闪而逝6,Visual Studio IDE编写程序时不显示窗口或窗口一闪而逝的解决方法...

    这篇文章主要为大家详细介绍了Visual Studio IDE编写程序时不显示窗口或窗口一闪而逝的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 使用Visual Studio IDE编写 ...

  6. [Visual Studio 2022 C# VSTO Excel]复制form窗体或复制cs类的正确做法

    [Visual Studio 2022 C# VSTO Excel]复制form窗体或复制cs类的正确做法 如果直接在VS中复制粘贴的话,则会报错. 解决方法: 1.将要复制的form窗体和类的三个类 ...

  7. Visual Studio 2017在编译时出现错误E2512:功能测试宏的参数必须是简单标识符

    Visual Studio 2017在编译时出现错误E2512:功能测试宏的参数必须是简单标识符 问题描述: Visual Studio 2017在编译时出现错误E2512:功能测试宏的参数必须是简单 ...

  8. Visual Studio Code设置断点时出现Unverified breakpoint该咋办

    有的时候在Visual Studio Code里选中某一行设置断点,发现代码行号前面的圆圈是空心的, 而期望的断点设置成功后,显示是这样的: 空心的圆圈前面弹出的提示"Unverified ...

  9. 在Visual Studio中利用NTVS创建Pomelo项目

    刚看新闻,才知道微软发布了Node.js Tools for Visual Studio(NTVS),受够了WebStorm输入法Bug的困扰,这下终于可以解脱了.以Pomelo为例,运行命令:pom ...

最新文章

  1. a16z基金:顶级风投眼中的2019技术趋势
  2. 心得体悟帖---16、哪些看起来很难做的事情真的不过如此
  3. 【C#】详解使用Enumerable.Distinct方法去重
  4. P4457-[BJOI2018]治疗之雨【期望dp,高斯消元】
  5. PS图片无损放大插件 Alien Skin Blow Up 3 for Mac
  6. 让多核CPU占用率曲线听你指挥(Windows实现)——《编程之美》1.1学习笔记
  7. lnmp的php.ini,lamp/lnmp优化3--phpini
  8. iOS开发经验总结(上)
  9. linux 内存性能评估,linux的内存性能评估
  10. 分子动力学模拟-gromacs的基本使用
  11. mysql网吧管理系统_网吧管理系统(数据库)
  12. 大一上学期闭组考核(借阅功能有逻辑错误)
  13. 惠普磁带备份机支持备份几台服务器,HP 磁带机和 Tapeware 备份软件
  14. 基于C语言的内存池的设计与实现
  15. 阿里P9纯手打亿级高并发系统设计手册,走进阿里的架构世界
  16. mysql grant什么意思_MySQL grant 语法的详细解析
  17. 石川:异象、因子和多因子模型
  18. 视频信号指标与测试方法
  19. 微博点击图片放大html,新浪微博图片放大效果[artZoom.js]
  20. python调用linux的命令

热门文章

  1. 茅台集团黔茅酒产品介绍
  2. 科学计算机等号按哪个,急!!计算器解方程等于号怎么按?
  3. 最短路 弗雷迪青蛙正坐在湖中的一块石头上。突然他注意到坐在另一块石头上的Fiona Frog。他计划去看望她,但由于水很脏,而且满是游客的防晒霜,他想避免游泳,而是跳着去接近她。
  4. 一个中国式研发绩效管理小故事
  5. 基于python的tcp的端口转发程序
  6. linux ros安装
  7. pureftpd mysql 语句_Pureftpd之MYSQL数据库所使用的函数
  8. Kaggle之数据集的使用(2)类别存储在csv文件中
  9. 2020一线互联网大厂面经集——阿里篇「1」
  10. Oracle排名函数(Rank)实例详解