项目文件中的已知属性(知道了这些,就不会随便在 csproj 中写死常量了)

知道了 csproj 文件中的一些常用变量,修改文件的时候就不会写很多的垃圾代码。


什么?你的 csproj 文件太长不想看?说明你用了旧格式的 csproj,阅读我的另一篇文章 将 WPF、UWP 以及其他各种类型的旧样式的 csproj 文件迁移成新样式的 csproj 文件 将它转为新格式之后,你就会觉得这么简短精炼的 csproj 文件,真不忍将它写杂。

比如通过以下写法,可以将所有的 *.xaml.cs 文件折叠到对应的 *.xaml 文件下(当然只对 IDE 有效,以下代码摘自 AvaloniaUI 的项目模板):

<Compile Update="**\*.xaml.cs">
    <DependentUpon>%(Filename)</DependentUpon>
</Compile>

项属性

写在 csproj 文件中 ItemGroup 组中的每一个元素即“项”。

对以下这一项进行说明的话:

<ItemGroup>  
    <Compile Include="src\Program.cs" />  
</ItemGroup> 

那么,可用的属性有:

项属性 含义 举例
%(FullPath) 文件的完全路径 C:\Users\lvyi\Development\Demo\src\Program.cs
%(RootDir) 文件所在的根目录 C:\
%(Filename) 文件名(不含扩展名) Program
%(Extension) 文件扩展名 .cs
%(RelativeDir) 文件所在的文件夹 src\
%(Directory) 除了根目录之外的目录 Users\lvyi\Development\Demo\src\
%(RecursiveDir) 如果项是用通配符写的,那么此值表示匹配到某一项时的目录 Users\lvyi\Development\Demo\src\
%(Identity) 项的标识符,也就是 Include 里写的东西 src\Program.cs
%(ModifiedTime) 文件的修改时间 2018-04-12 21:00:43.7851385
%(CreatedTime) 文件的创建时间 2018-04-12 21:01:50.1417635
%(AccessedTime) 文件最近被访问的时间 2018-04-12 21:02:15.4132476

参考资料

本文会经常更新,请阅读原文: https://walterlv.github.io/post/known-properties-in-csproj.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

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