常见的 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.exe 或 dotnet 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 用作空文件夹的占位符。 填充文件夹后,该文件夹将被另一个元素替换。
另请参阅
- 通用 MSBuild 项目属性
- 通用 MSBuild 项元数据