常用的 MSBuild 项目项
在 MSBuild 中,项是对一个或多个文件的命名引用。 项包含元数据(如文件名、路径和版本号)。 Visual Studio 中的所有项目类型具有几个通用项。 在文件 Microsoft.Build.CommonTypes.xsd 中定义了这些项。
本文列出了所有常见项目项。
Reference
表示项目中的程序集(托管)引用。
项元数据名称 | 描述 |
---|---|
HintPath | 可选的字符串。 程序集的相对或绝对路径。 |
“属性” | 可选的字符串。 程序集的显示名称,例如“System.Windows.Forms”。 |
FusionName | 可选的字符串。 指定项的简单或强合成名称。 当此属性存在时,它可能会节省时间,因为无需打开程序集文件即可获取融合名称。 |
SpecificVersion | 可选的布尔值。 指定是否应仅引用合成名称中的版本。 |
别名 | 可选的字符串。 引用的任何别名。 |
Private | 可选的布尔值。 指定是否应将引用复制到输出文件夹。 此特性与 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. primary 2. tlbimp 3. primaryortlbimp 4. aximp |
Isolated | 可选的布尔值。 指定组件是否为免注册组件。 |
COMFileReference
表示传递到 ResolveComReference 目标的 TypeLibFiles
参数的类型库的列表。 此项仅适用于 .NET 项目。
项元数据名称 | 描述 |
---|---|
WrapperTool | 可选的字符串。 对组件使用的包装器的名称。 值为: 1. primary 2. tlbimp 3. primaryortlbimp 4. aximp |
NativeReference
表示本机清单文件或对此类文件的引用。
项元数据名称 | 描述 |
---|---|
“属性” | 必选字符串。 清单文件基名称。 |
HintPath | 必选字符串。 清单文件的相对路径。 |
ProjectReference
表示对另一个项目的引用。 ProjectReference
项由 ResolveProjectReferences
目标转换为 Reference 项,因此,如果转换过程没有将其覆盖,则 Reference 上的任何有效元数据都可能在 ProjectReference
上有效。
项元数据名称 | 描述 |
---|---|
“属性” | 可选的字符串。 引用的显示名称。 |
GlobalPropertiesToRemove | 可选的 string[] 。 在生成引用项目时要删除的属性的名称,例如 RuntimeIdentifier;PackOnBuild 。 默认为空。 |
项目 | 可选的字符串。 引用的 GUID,形式为 {12345678-1234-1234-1234-123456781234}。 |
OutputItemType | 可选的字符串。 要将目标输出发到的项类型。 默认为空。 如果引用元数据设置为“true”(默认值),则目标输出将成为编译器的引用。 |
ReferenceOutputAssembly | 可选的布尔值。 如果设置为 false ,则不包括引用项目的输出作为 此项目的引用 ,但仍确保另一个项目在此项目之前生成。 默认为 true 。 |
Private | 可选的布尔值。 指定是否应将引用复制到输出文件夹。 此特性与 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 进行编码。
Compile
表示编译器的源文件。
项元数据名称 | 描述 |
---|---|
DependentUpon | 可选的字符串。 指定该文件正确编译所依赖的文件。 |
AutoGen | 可选的布尔值。 指示是否已由 Visual Studio 集成开发环境 (IDE) 为项目生成了文件。 |
链接 | 可选的字符串。 文件在物理上处于项目文件的影响范围之外时要显示的符号路径。 |
可见 | 可选的布尔值。 指示是否要在 Visual Studio 中的“解决方案资源管理器”中显示文件。 |
CopyToOutputDirectory | 可选的字符串。 确定是否将文件复制到输出目录。 值为: 1. Never 2. Always 3. PreserveNewest |
EmbeddedResource
表示要在生成的程序集中嵌入的资源。
项元数据名称 | 描述 |
---|---|
DependentUpon | 可选的字符串。 指定该文件正确编译所依赖的文件 |
Generator | 可选的字符串。 在此项上运行的任何文件生成器的名称。 |
LastGenOutput | 可选的字符串。 在此项上运行的任何文件生成器创建的文件的名称。 |
CustomToolNamespace | 可选的字符串。 在此项上运行的任何文件生成器应在其中创建代码的命名空间。 |
链接 | 可选的字符串。 如果文件在物理上处于项目的影响范围之外,则显示符号路径。 |
可见 | 可选的布尔值。 指示是否要在 Visual Studio 中的“解决方案资源管理器”中显示文件。 |
CopyToOutputDirectory | 可选的字符串。 确定是否将文件复制到输出目录。 值为: 1. Never 2. Always 3. PreserveNewest |
LogicalName | 必选字符串。 嵌入资源的逻辑名称。 |
内容
表示未编译到项目中但可以嵌入或与其一起发布的文件。
项元数据名称 | 描述 |
---|---|
DependentUpon | 可选的字符串。 指定该文件正确编译所依赖的文件。 |
Generator | 可选的字符串。 在此项上运行的任何文件生成器的名称。 |
LastGenOutput | 可选的字符串。 在此项上运行的任何文件生成器创建的文件的名称。 |
CustomToolNamespace | 可选的字符串。 在此项上运行的任何文件生成器应在其中创建代码的命名空间。 |
链接 | 可选的字符串。 文件在物理上处于项目的影响范围之外时要显示的符号路径。 |
PublishState | 必选字符串。 内容的发布状态,为以下任一项: - Default - Included - Excluded - DataFile - Prerequisite |
IsAssembly | 可选的布尔值。 指定文件是否为程序集。 |
可见 | 可选的布尔值。 指示是否要在 Visual Studio 中的“解决方案资源管理器”中显示文件。 |
CopyToOutputDirectory | 可选的字符串。 确定是否将文件复制到输出目录。 值为: 1. Never 2. Always 3. PreserveNewest |
TargetPath | 可选的字符串。 项的输出路径(相对于配置和/或平台特定的输出目录),包括文件名。 这遵循 Link 元数据(如果提供)。 如果未提供 TargetPath,则会在生成过程中计算它。 请参阅 AssignTargetPath。 |
None
表示不应在生成过程中具有角色的文件。
项元数据名称 | 描述 |
---|---|
DependentUpon | 可选的字符串。 指定该文件正确编译所依赖的文件。 |
Generator | 可选的字符串。 在此项上运行的任何文件生成器的名称。 |
LastGenOutput | 可选的字符串。 在此项上运行的任何文件生成器创建的文件的名称。 |
CustomToolNamespace | 可选的字符串。 在此项上运行的任何文件生成器应在其中创建代码的命名空间。 |
链接 | 可选的字符串。 文件在物理上处于项目的影响范围之外时要显示的符号路径。 |
可见 | 可选的布尔值。 指示是否要在 Visual Studio 中的“解决方案资源管理器”中显示文件。 |
CopyToOutputDirectory | 可选的字符串。 确定是否将文件复制到输出目录。 值为: 1. Never 2. Always 3. PreserveNewest |
AssemblyMetadata
表示要生成为 [AssemblyMetadata(key, value)]
的程序集特性。
项元数据名称 | 描述 |
---|---|
包括 | 成为 AssemblyMetadataAttribute 特性构造函数中的第一个参数(键)。 |
“值” | 必选字符串。 成为 AssemblyMetadataAttribute 特性构造函数中的第二个参数(值)。 |
注意
此项适用于使用 SDK for .NET 5(和 .NET Core)及更高版本的项目。
InternalsVisibleTo
指定要作为 [InternalsVisibleTo(..)]
程序集特性发出的程序集。
项元数据名称 | 描述 |
---|---|
包括 | 程序集名称。 |
Key | 可选的字符串。 程序集的公钥。 |
注意
此项适用于使用 SDK for .NET 5(和 .NET Core)及更高版本的项目。
BaseApplicationManifest
表示用于生成的基本应用程序清单,包含 ClickOnce 部署安全信息。
CodeAnalysisImport
表示要导入的 FxCop 项目。
导入
表示应由 Visual Basic 编译器导入其命名空间的程序集。
文件夹
此元素仅由 Visual Studio 用作空文件夹的占位符。 填充文件夹后,该文件夹将被另一个元素替换。