MSBuild文件是否有标准文件扩展名?

Jos*_*off 66 msbuild

MSBuild文件是否有标准文件扩展名,而不是项目文件,而是更复杂的构建脚本?

我在想.msbuild.proj以避免与其他.proj文件混淆(我知道它实际上是MSBuild文件).

KMo*_*raz 79

更新:回想起来,我已经更新了答案以包含更多约定.幸得赛义德·易卜拉欣·哈希米和其他人在此线程.


.proj

通用的流行惯例.通常由主构建脚本使用.

例子:

build.proj
main.proj 
company.product.build.proj
Run Code Online (Sandbox Code Playgroud)

.targets

.targets文件是那些使用Import元素导入其他文件的文件.由于这些文件严格可重用,因此实际上并不构建任何内容.它们通常缺少实际构建任何内容的属性和项值.

例子:

Microsoft.Common.targets
Microsoft.CSharp.targets
Microsoft.Data.Entity.targets
Run Code Online (Sandbox Code Playgroud)

.**proj

语言特定约定,其中****代表语言简短的首字母缩略词.

众所周知的扩展:

.csproj    | C#
.vbproj    | VB.NET
.vcxproj   | Visual C++
.dbproj    | Database project
.fsproj    | F#
.pyproj    | IronPython
.rbproj    | IronRuby
.wixproj   | Windows Installer XML (WiX)
.vdproj    | Visual Studio Deployment Project
.isproj    | InstallShield 
.pssproj   | PowerShell
.modelproj | Modeling project
Run Code Online (Sandbox Code Playgroud)

.props

Visual C++项目(.vcxproj)使用的项目属性表.

例子:

Microsoft.Cl.Common.props
Microsoft.Cpp.CoreWin.props
Microsoft.Cpp.props
Microsoft.Link.Common.props
Run Code Online (Sandbox Code Playgroud)

.tasks

由调用的MSBuild项目导入的常见包含文件.包含<UsingTask>元素列表.

例子:

Microsoft.Common.Tasks
MSBuild.ExtensionPack.tasks
Run Code Online (Sandbox Code Playgroud)

.settings.targets

(如果不严格地说是文件扩展名,这是一个相关的约定.)

由调用的MSBuild项目导入的常见包含文件.包含"与构建和部署过程中使用的共享实用程序相关的各种属性以及任何其他常见设置"(Sayed Ibrahim Hashimi,2009).

例子:

EntityFramework.settings.targets

Compiler.settings.targets

Library.Settings.targets

  • 我还经常使用".user"进行非源控制的覆盖(我的标准.gitingore文件中有"*.user"),如果在没有".user"的版本之后存在,则有条件地导入该文件.例如,如果我有一个`<import Project ="MyProject.settings.targets"/>`那么我跟着一行`<Import Project ="MyProject.settings.targets.user"Condition ="Exists('MyProject .settings.targets.user')"/>`.这样,如果我需要覆盖本地机器的任何东西,但不希望它在源代码控制中,我可以把它放在那里. (2认同)

Say*_*imi 14

最接近标准如下:

  1. .proj
  2. .targets
  3. .XXproj

.targets文件是指使用Import元素导入其他文件的文件.由于这些文件是严格可重用的,因此它们不构建任何东西.它们通常缺少实际构建任何内容的属性和项值.

.proj文件是可以自己构建的创建文件.他们可能会导入.targets文件.

.XXproj,例如.csproj或.vbproj是构建包含特定语言的文件的文件.例如.csproj用于C#项目,而.vbproj用于VB.NET项目文件.此约定来自Visual Studio.


Ric*_*ett 5

我们只用 .build