常见的 MSBuild 项目项

在 MSBuild 中,项是对一个或多个文件的命名引用。 项包含文件名、路径和版本号等元数据。 Visual Studio 中的所有项目类型都有多个共同项。 这些文件在 Microsoft.Build.CommonTypes.xsd文件中定义。

本文列出了所有常见项目项。

Reference

表示项目中的程序集(托管)引用。

项元数据名称 描述
HintPath 可选字符串。 程序集的相对路径或绝对路径。
名字 可选字符串。 程序集的显示名称,例如“System.Windows.Forms”。
FusionName 可选字符串。 指定项的简单或强融合名称。

当此属性存在时,它可能会节省时间,因为无需打开程序集文件即可获取融合名称。
SpecificVersion 可选的布尔值。 指定是否只应引用融合名称中的版本。
别名 可选字符串。 引用的任何别名。
私人 可选的布尔值。 指定是否应将引用复制到输出文件夹。 此属性与 Visual Studio IDE 中引用的 复制本地 属性匹配。

COMReference

表示项目中的 COM(非托管)组件引用。 此项仅适用于 .NET 项目。

项元数据名称 描述
名字 可选字符串。 组件的显示名称。
Guid 所需的字符串。 组件的 GUID,格式为 {12345678-1234-1234-1234-123456781234}。
VersionMajor 所需的字符串。 组件的版本号的主要部分。 例如,如果完整版本号为“5.46”,则为“5”。
VersionMinor 所需的字符串。 组件的版本号的次要部分。 例如,如果完整版本号为“5.46”,则为“46”。
EmbedInteropTypes 可选的布尔值。 如果为 true,请将此引用中的互操作类型直接嵌入到程序集中,而不是生成互操作 DLL。
Lcid 可选字符串。 组件的 LocaleID。
WrapperTool 可选字符串。 在组件上使用的包装器工具的名称。 值为:

1. 主要
2. tlbimp
3. primaryortlbimp
4. aximp
孤立 可选的布尔值。 指定组件是否为无注册组件。

COMFileReference

表示传递给 TypeLibFiles 目标的 参数的类型库的列表。 此项仅适用于 .NET 项目。

项元数据名称 描述
EmbedInteropTypes 可选的布尔值。 如果为 true,请将此引用中的互操作类型直接嵌入到程序集中,而不是生成互操作 DLL。
WrapperTool 可选字符串。 在组件上使用的包装器工具的名称。 值为:

1. 主要
2. tlbimp
3. primaryortlbimp
4. aximp

NativeReference

表示本机清单文件或对此类文件的引用。

项元数据名称 描述
名字 所需的字符串。 清单文件的基名称。
HintPath 所需的字符串。 清单文件的相对路径。

ProjectReference

表示对另一个项目的引用。 ProjectReference 项由 目标转换为 ResolveProjectReferences 项,因此,如果转换过程未覆盖引用,则引用上的任何有效元数据可能在 ProjectReference有效。

项元数据名称 描述
名字 可选字符串。 引用的显示名称。
GlobalPropertiesToRemove 可选 string[]。 生成引用的项目时要删除的属性的名称,例如 RuntimeIdentifier;PackOnBuild。 默认值为空。
项目 可选字符串。 引用的 GUID,格式为 {12345678-1234-1234-1234-123456781234}。
OutputItemType 可选字符串。 要向中发出目标输出的项类型。 默认值为空。 如果引用元数据设置为“true”(默认值),则目标输出将成为编译器的引用。
ReferenceOutputAssembly 可选的布尔值。 如果设置为 false,则不包括引用项目的输出作为此项目的 引用,但仍确保其他项目在此项目之前生成。 默认为 true
私人 可选的布尔值。 指定是否应将引用复制到输出文件夹。 此属性与 Visual Studio IDE 中引用的 复制本地 属性匹配。
SetConfiguration 可选字符串。 设置所引用项目的全局属性 Configuration,例如 Configuration=Release
SetPlatform 可选字符串。 设置所引用项目的全局属性 Platform,例如 Platform=AnyCPU
SetTargetFramework 可选字符串。 设置所引用项目的全局属性 TargetFramework,例如 TargetFramework=netstandard2.0
SkipGetTargetFrameworkProperties 可选的布尔值。 如果 true,则生成引用的项目,而无需协商最兼容的 TargetFramework 值。 默认为 false
目标 可选 string[]。 应生成的引用项目中的目标的分号分隔列表。 默认值为 $(ProjectReferenceBuildTargets)的值,默认值为空,指示默认目标。 在 Visual Studio 中生成(而不是 MSBuild.exedotnet build),指定这不会阻止 Visual Studio 生成引用项目的默认目标。

注意

.NET Framework 和 .NET Core(包括 .NET 5 及更高版本)之间的项目引用的工作方式存在差异。 在 .NET Framework 项目中,项目引用不可传递。 也就是说,如果 Project1 引用 Project2,而 Project2 引用 Project3,则不能从 Project1 针对 Project3 进行代码编码。 但是,在 .NET Core(包括 .NET 5 及更高版本中),项目引用 可传递。 可以在 Project1 中针对 Project3 编写代码。

编译

表示编译器的源文件。

项元数据名称 描述
DependentUpon 可选字符串。 指定此文件所依赖的文件以正确编译。
AutoGen 可选的布尔值。 指示文件是否由 Visual Studio 集成开发环境(IDE)为项目生成。
链接 可选字符串。 当文件在物理上位于项目文件的影响之外时要显示的表示法路径。
可见 可选的布尔值。 指示是否在 Visual Studio 中 解决方案资源管理器 显示文件。
CopyToOutputDirectory 可选字符串。 确定是否将文件复制到输出目录。 值为:

1. 从不
2. 始终
3. PreserveNewest
4. IfDifferent

EmbeddedResource

表示要嵌入到生成的程序集中的资源。

项元数据名称 描述
文化 可选字符串。 指定资源文件的区域性。 如果指定,生成过程不会根据文件扩展名自动推断区域性(这依赖于托管生成的计算机上的 .NET/OS 可用的区域性)。 强烈建议设置 Culture={culture identifier}WithCulture=false 元数据。
WithCulture 可选布尔值。 指定文件是非区域性的,应跳过 AssignCulture 任务进行区域性检测。 强烈建议设置 Culture={culture identifier}WithCulture=false 元数据。
DependentUpon 可选字符串。 指定此文件依赖的文件进行正确编译
发电机 可选字符串。 在此项上运行的任何文件生成器的名称。
LastGenOutput 可选字符串。 由此项目上运行的任何文件生成器创建的文件的名称。
CustomToolNamespace 可选字符串。 在此项上运行的任何文件生成器都应创建代码的命名空间。
链接 可选字符串。 如果文件在物理上位于项目的影响之外,将显示表示法路径。
可见 可选的布尔值。 指示是否在 Visual Studio 中 解决方案资源管理器 显示文件。
CopyToOutputDirectory 可选字符串。 确定是否将文件复制到输出目录。 值为:

1. 从不
2. 始终
3. PreserveNewest
4. IfDifferent
LogicalName 所需的字符串。 嵌入资源的逻辑名称。

内容

表示未编译到项目中但可以嵌入或与其一起发布的文件。

项元数据名称 描述
DependentUpon 可选字符串。 指定此文件所依赖的文件以正确编译。
发电机 可选字符串。 在此项上运行的任何文件生成器的名称。
LastGenOutput 可选字符串。 由此项目上运行的任何文件生成器创建的文件的名称。
CustomToolNamespace 可选字符串。 在此项上运行的任何文件生成器都应创建代码的命名空间。
链接 可选字符串。 如果文件在物理上位于项目的影响之外,则显示表示法路径。
PublishState 所需的字符串。 内容的发布状态,任一:

-违约
-包括
-排除
- DataFile
-先决条件
IsAssembly 可选的布尔值。 指定文件是否为程序集。
可见 可选的布尔值。 指示是否在 Visual Studio 中 解决方案资源管理器 显示文件。
CopyToOutputDirectory 可选字符串。 确定是否将文件复制到输出目录。 值为:

1. 从不
2. 始终
3. PreserveNewest
4. IfDifferent
TargetPath 可选字符串。 项的输出路径(相对于配置和/或特定于平台的输出目录),包括文件名。 这遵循 Link 元数据(如果提供)。 如果未提供 TargetPath,则会在生成过程中计算它。 请参阅 AssignTargetPath

没有

表示在生成过程中不应具有任何角色的文件。

项元数据名称 描述
DependentUpon 可选字符串。 指定此文件所依赖的文件以正确编译。
发电机 可选字符串。 在此项上运行的任何文件生成器的名称。
LastGenOutput 可选字符串。 由此项目上运行的任何文件生成器创建的文件的名称。
CustomToolNamespace 可选字符串。 在此项上运行的任何文件生成器都应创建代码的命名空间。
链接 可选字符串。 如果文件在物理上位于项目的影响之外,则显示表示法路径。
可见 可选的布尔值。 指示是否在 Visual Studio 中 解决方案资源管理器 显示文件。
CopyToOutputDirectory 可选字符串。 确定是否将文件复制到输出目录。 值为:

1. 从不
2. 始终
3. PreserveNewest
4. IfDifferent

AssemblyMetadata

表示要作为 [AssemblyMetadata(key, value)]生成的程序集属性。

项元数据名称 描述
包括 成为 AssemblyMetadataAttribute 属性构造函数中的第一个参数(键)。
价值 所需的字符串。 成为 AssemblyMetadataAttribute 属性构造函数中的第二个参数(值)。

注意

此项适用于使用 SDK for .NET 5(和 .NET Core)及更高版本的项目。

InternalsVisibleTo

指定要作为 [InternalsVisibleTo(..)] 程序集属性发出的程序集。

项元数据名称 描述
包括 程序集名称。
钥匙 可选字符串。 程序集的公钥。

注意

此项适用于使用 SDK for .NET 5(和 .NET Core)及更高版本的项目。

BaseApplicationManifest

表示生成的基本应用程序清单,并包含 ClickOnce 部署安全信息。

CodeAnalysisImport

表示要导入的 FxCop 项目。

进口

表示 Visual Basic 编译器应导入其命名空间的程序集。

文件夹

此元素仅由 Visual Studio 用作空文件夹的占位符。 填充文件夹后,该文件夹将被另一个元素替换。

另请参阅