为 Visual Studio 使用通配符批量添加项目文件

为 Visual Studio 使用通配符批量添加项目文件

发布于 2017-09-26 13:12 更新于 2018-01-15 15:52

Visual Studio 的项目文件其实是支持使用通配符的,尤其适合添加大量资源文件。

通常大家都不会关心 Visual Studio 的项目文件里是如何记录这个项目所包含的所有文件的,因为各位开发者们早已经习惯于右键添加文件或者拖拽文件进项目了。但如果你在某一个文件夹中放了大量的文件(尤其是图片等资源文件),那么这时会卡很久才能拖进去,拖完之后如果还要批量修改生成操作,那真的是痛不欲生。

但是,Visual Studio 提供的项目文件(*.csproj)其实是支持通配符的。


比如,我们通常的项目文件的片段是这样的:

<ItemGroup>
  <Content Include="Properties\Default.rd.xml" />
  <Content Include="Assets\LockScreenLogo.scale-200.png" />
  <Content Include="Assets\SplashScreen.scale-200.png" />
  <Content Include="Assets\Square150x150Logo.scale-200.png" />
  <Content Include="Assets\Square44x44Logo.scale-200.png" />
  <Content Include="Assets\Square44x44Logo.targetsize-24_altform-unplated.png" />
  <Content Include="Assets\StoreLogo.png" />
  <Content Include="Assets\Wide310x150Logo.scale-200.png" />
</ItemGroup>

但是,改成这样的话,以后新添加的 *.png 文件也会加入:

<ItemGroup>
  <Content Include="Properties\Default.rd.xml" />
  <Content Include="Assets\*.png" />
</ItemGroup>

而且,如果你想改生成方式,也很简单:

<ItemGroup>
  <None Include="Properties\Default.rd.xml" />
  <None Include="Assets\*.png" />
</ItemGroup>

但是,小心有坑,因为如果你的目录下是多个文件夹嵌套的话,需要用两个星号来表示可能出现多层文件夹:

<ItemGroup>
  <Content Include="Properties\Default.rd.xml" />
  <Content Include="Assets\*.png" />
  <Content Include="Assets\**\*.png" />
</ItemGroup>

参考资料

本文会经常更新,请阅读原文: https://walterlv.com/post/vs/2017/09/26/wildcards-in-vs-projects.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 (walter.lv@qq.com)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏技术支持log

Linux 上部署 Socks5 代理服务器

这里我们在 Centos 7.4 系统上来部署 SS5 (Socks5 Proxy Server)代理服务器,用处还是蛮大的,办公网代理啊,用作跳板啥的,用法就...

3.1K2
来自专栏逆向技术

病毒分析第一讲,分析病毒注意事项,以及简单分析主要功能

        病毒分析第一讲,分析病毒注意事项,以及简单分析主要功能 一丶认识木马和病毒的区别 木马和病毒是两个不一样的,有人会把木马认为是病毒,但其实不是 ...

2296
来自专栏Jerry的SAP技术分享

Internationalization(i18n) support in SAP CRM,UI5 and Hybris

i18n(其来源是英文单词 internationalization的首末字符i和n,18为中间的字符数)是“国际化”的简称。对程序来说,在不修改内部代码的情况...

3504
来自专栏云加头条

注意你的数据库, 可能是勒索病毒的下一个目标 !

近日,腾讯云安全中心情报侧监控显示,目前云上部分用户 MongoDB 、ElasticSearch 和 CouchDB 等 DB 服务器仍然存在的未授权安全漏...

6031
来自专栏张善友的专栏

VS轻松开发Node.js应用

PTVS开发团队又开发出一款可以在VS里编写Node.js应用程序的插件——NTVS(Node.js Tools for Visual Studio),开发者可...

2649
来自专栏李鹏的专栏

龙果支付系统搭建与部署

龙果支付系统是国内首款开源的互联网支付系统,其核心目标是汇聚所有主流支付渠道,打造一款轻量、便捷、易用,且集支付、资金对账、资金清结算于一体的支付系统,满足互联...

5711
来自专栏云计算教程系列

如何在CentOS 7上使用MEAN.JS安装MEAN堆栈

术语MEAN最初由Valeri Karpov创造,该术语源自每个组件的第一个字母。Valeri在这篇博客文章中定义了MEAN ,其中他给出了选择在MEAN堆栈的...

690
来自专栏FreeBuf

数字取证技术 | Windows内存信息提取

0×00概述 后面会花一部分时间,写一些数字取证相关的文章。攻击技术贴多如牛毛,眼下不管是网安,还是安全厂商, 欠缺的是对取证技术的研究。 大致想了一下,主要会...

4026
来自专栏WD学习记录

ASP.NET MVC4 配置逻辑

892
来自专栏FreeBuf

LaserCrack:一款可扩展的暴力破解框架

lasercrack是一款爆力破解工具,现如今市面上常见的暴力工具如hydra,medusa都有着不错的破解效率,不过我还没有找到ruby写的,一方面是想从原理...

1432

扫码关注云+社区

领取腾讯云代金券