ResolveAssemblyReference 任务

确定依赖指定程序集的所有程序集,其中包括第二级和第 n 级的依赖项。 另 请参阅排查程序集引用的生成错误。

参数

下表描述了 ResolveAssemblyReference 任务的参数。

参数 说明
AllowedAssemblyExtensions 可选 String[] 参数。

将在解析引用时使用的程序集文件扩展名。 默认文件扩展名为 exedll
AllowedRelatedFileExtensions 可选 String[] 参数。

要用于搜索彼此相互关联的文件的文件扩展名。 默认扩展为 pdbxml
AppConfigFile 可选 String 参数。

指定从中进行分析和提取 bindingRedirect 映射的 app.config 文件。 如果指定此参数,则 AutoUnify 参数必须是 false
Assemblies 可选 ITaskItem[] 参数。

指定必须为其标识完整路径和依赖项的项。 这些项可以具有类似“System”的简单名称或类似“System, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”的强名称。

传递给此参数的项可选择性地包含以下项的元数据:

- PrivateBoolean 值。 如果为 true,则在本地复制该项。 默认值为 true
- HintPathString 值。 指定要用作引用的路径和文件名。 在参数中SearchPaths指定时{HintPathFromItem}使用此元数据。 默认值为一个空字符串。
- SpecificVersionBoolean 值。 如果为 true,则在 Include 特性内指定的确切名称必须匹配。 如果 false,则具有相同简单名称的任何程序集都有效。 如果未 SpecificVersion 指定,则任务将检查项的属性中的 Include 值。 如果该特性是一个简单名称,则其行为方式如同 SpecificVersionfalse。 如果该特性是一个强名称,则其行为方式如同 SpecificVersiontrue
当与引用项类型搭配使用时, Include 特性必须是要解析的程序集的完整合成名称。 仅当合成名称完全匹配 Include 特性时才解析该程序集。
如果项目面向 .NET Framework 版本,且引用了为更高版本 .NET Framework 编译的程序集,则该引用仅当 SpecificVersion 设置为 true
当项目面向配置文件并引用不在配置文件中的程序集时,仅当引用 SpecificVersion 设置为 true 时,引用才会解析。
- ExecutableExtensionString 值。 当存在时,解析的程序集必须具有此扩展名。 如果不存在, dll 则首先考虑每个已检查目录的后跟 .exe
- SubTypeString 值。 仅将具有空 SubType 元数据的项解析为完整的程序集路径。 忽略无空 SubType 元数据的项目。
- AssemblyFolderKeyString 值。 出于兼容目的支持此元数据。 它指定一个用户定义的注册表项,如 hklm\<VendorFolder>,Assemblies 应用此注册表项来解析程序集引用。
AssemblyFiles 可选 ITaskItem[] 参数。

指定为其查找依赖项的完全限定程序集列表。

传递给此参数的项可选择性地包含以下项的元数据:

- Private:可选 Boolean 值。 如果为 true,则在本地复制该项。
- FusionName:可选的 String 元数据。 指定此项的简单名称或强名称。 如果此属性存在,则它可以节省时间,因为无需打开程序集文件即可获取名称。
AssemblyInformationCacheOutputPath 可选 String 参数。

如果不为 null,则将与计算机无关的 AssemblyFiles 输入相关信息序列化到命名文件。 此设置将替代通常的缓存,因此,只有在生成包含许多引用的 SDK 并打算将缓存寄送给客户时,才使用此设置。
AssemblyInformationCachePaths 可选 ITaskItem 参数。

如果未为 null,则如果 MSBuild 找不到 obj 文件夹中的常用缓存,则将此缓存集用作输入。 通常由 SDK 提供,用于提高首次生成性能。
AutoUnify 可选 Boolean 参数。

此参数用于生成程序集,例如 DLL,而 DLL 不能有正常的 App.Config 文件。

当为 true 时,会自动处理最后得到的依赖项关系图,如同向 AppConfigFile 参数传递了 App.Config 文件一样。 此虚拟 App.Config 文件对每组冲突程序集具有 bindingRedirect 条目,以便选择最高版本的程序集。 这样做的结果是避免有关冲突程序集的警告,因为每个冲突都将得到解决。

true,每个不同的重新映射都会导致高优先级注释,其中显示了旧版本和新版本AutoUnifytrue

如果 true为空,则 AppConfigFile 参数必须为空。

当为 false时,不会自动发生程序集版本重映射。 当存在两个版本的程序集时,将发出警告。

当为 false时,同一个程序集不同版本间的不同冲突将导致高优先级注释。 这些注释后跟单个警告。 该警告具有唯一的错误代码,并包含文本,该文本读取“发现不同版本的引用和依赖程序集之间的冲突”。

默认值为 false
CandidateAssemblyFiles 可选 String[] 参数。

指定用于搜索和解析过程的程序集列表。 传递给此参数的值必须是绝对文件名或项目相对文件名。

当参数包含 {CandidateAssemblyFiles} 作为要考虑的路径之一时 SearchPaths ,将考虑此列表中的程序集。
CopyLocalDependenciesWhenParentReferenceInGac 可选 Boolean 参数。

如果为 true,若要确定是否应在本地复制依赖项,则其中一项完成的检查是查看项目文件中的父引用是否设置了 Private 元数据。 如果设置了元数据,则将 Private 值用作依赖项。

如果未设置元数据,依赖项将执行与父引用相同的检查。 其中一项检查是查看该引用是否位于 GAC 中。 如果引用位于 GAC 中,则不会在本地复制该引用,因为假定该引用位于目标计算机上的 GAC 中。 这仅应用于特定的引用,而不是其依赖项。

例如,GAC 中项目文件中的引用不会在本地复制,但其依赖项在本地复制,因为它们不在 GAC 中。

如果为 false,则会检查项目文件引用是否位于 GAC 中,并根据需要在本地复制。

检查依赖项以查看它们是否位于 GAC 中,还检查项目文件中的父引用是否位于 GAC 中。

如果项目文件中的父引用位于 GAC 中,则不会在本地复制依赖项。

无论此参数是 true 还是 false,如果有多个父引用,并且其中任何一个都不在 GAC 中,则所有引用都在本地复制。
CopyLocalFiles 可选的 ITaskItem[] 只读输出参数。

返回 ResolvedFilesResolvedDependencyFilesRelatedFilesSatelliteFilesScatterFiles 参数中的每个具有值为 CopyLocal true true
DependsOnNETStandard Boolean 输出参数。

所有已解析的主要引用是否取决于 .NET Standard。
DependsOnSystemRuntime Boolean 输出参数。

所有已解析的主要引用是否取决于 System.Runtime。
DoNotCopyLocalIfInGac 可选 Boolean 参数。

为 CopyLocal 的确定启用旧模式。 如果为 true,则如果在 GAC 中找到引用的程序集,则不会在本地复制它们。 如果为 false,则程序集将在本地复制,除非它们仅在 GAC 中找到。 默认值为 false
FilesWritten 可选的 ITaskItem[] 输出参数。

包含写入到磁盘的项。
FindDependencies 可选 Boolean 参数。

如果 true找到依赖项,则找到依赖项。 否则只找到主引用。 默认值为 true
FindDependenciesOfExternallyResolvedReferences 可选 Boolean 参数。

即使引用被标记为 ExternallyResolved=true 元数据,仍会强制遍历依赖项。
FindRelatedFiles 可选 Boolean 参数。

如果 true找到相关文件(如 pdb 文件和 xml 文件)。 默认值为 true
FindSatellites 可选 Boolean 参数。

如果 true找到附属程序集,则找到附属程序集。 默认值为 true.
FindSerializationAssemblies 可选 Boolean 参数。

如果为 true,则该任务搜索序列化程序集。 默认值为 true
FullFrameworkAssemblyTables 可选 ITaskItem[] 参数。

指定要将 FrameworkDirectory 重编列表与特定框架目录关联的元数据的项。 如果未建立关联,则会记录错误。 如果未 FrameworkDirectory 设置解析程序集引用(RAR)逻辑,则使用目标框架目录。
FullFrameworkFolders 可选 System.String[] 参数。

指定包含 RedistList 目录的文件夹。 此目录表示给定客户端配置文件的完整框架,例如 %programfiles%\reference assemblies\microsoft\framework\v4.0。
FullTargetFrameworkSubsetNames 可选 String[] 参数。

包含目标框架子集名称的列表。 如果列表中的子集名称匹配 TargetFrameworkSubset 名称属性中的一个名称,则系统将排除生成时的特定目标框架子集。
IgnoreDefaultInstalledAssemblyTables 可选 Boolean 参数。

如果为 true,则该任务搜索并使用位于 TargetFrameworkDirectories 下 \RedistList 目录中的其他已安装程序集表(或“Redist 列表”)。 默认值为 false.
IgnoreDefaultInstalledAssemblySubsetTables 可选 Boolean 参数。

如果为 true,则该任务搜索并使用位于 TargetFrameworkDirectories 下 \SubsetList 目录中的其他已安装程序集子集表(或“子集列表”)。 默认值为 false.
IgnoreTargetFrameworkAttributeVersionMismatch 可选 Boolean 参数。

如果 true,则该任务将解析面向比当前项目更高的 .NET Framework 版本的程序集。 默认值为 false跳过这些引用。
IgnoreVersionForFrameworkReferences 可选 Boolean 参数。

如果主引用是框架程序集,则忽略其版本信息,并实际通过当前目标框架来解析框架程序集。
InstalledAssemblySubsetTables 可选 ITaskItem[] 参数。

包含 XML 文件的列表,该文件指定应位于目标子集中的程序集。

作为选项,此列表中的项可以指定要 FrameworkDirectory 关联的元数据 InstalledAssemblySubsetTable

与特定的框架目录。

如果只有一个元素,则此列表中缺少FrameworkDirectory"元数据的任何项都被视为设置为传递给TargetFrameworkDirectories的唯一TargetFrameworkDirectories值。
InstalledAssemblyTables 可选 String 参数。

包含 XML 文件的列表,该文件指定应安装到目标计算机上的程序集。

当设置了 InstalledAssemblyTables 时,列表中早期版本的程序集将合并到 XML 中所列的较新版本。 此外,具有 InGAC='true' 设置的程序集被视为先决条件,并且设置为 CopyLocal='false' 除非显式重写。

作为选项,此列表中的项可以指定要 FrameworkDirectory 与特定框架目录关联的 InstalledAssemblyTable 元数据。 但将忽略此设置,除非 Redist 名称以

Microsoft-Windows-CLRCoreComp

如果只有一个元素,则此列表中缺少FrameworkDirectory元数据的任何项都被视为设置为传递的唯一TargetFrameworkDirectories

TargetFrameworkDirectories的唯一值。
LatestTargetFrameworkDirectories 可选 String[] 参数。

指定目录列表,其中包含该计算机上可将其作为目标的最新框架的 redist 列表。 如果未设置,则使用计算机上为给定目标框架标识符安装的最高框架。
OutputUnresolvedAssemblyConflicts 可选 Boolean 参数。

如果为 true,则将与诊断代码 MSB3277 之间的所有未解决的程序集冲突输出到输出 UnresolveAssemblyConflicts
ProfileName 可选 String 参数。

指定要设定为目标的框架配置文件的名称。 例如,客户端、Web 或网络。 仅与 .NET Framework 配置文件相关。
RelatedFiles 可选的 ITaskItem[] 只读输出参数。

包含与引用具有相同基名称的相关文件,例如 XML 和 pdb 文件。

此参数中列出的文件可选择性地包含以下项的元数据:

- PrimaryBoolean 值。 如果为 true,则文件项已通过使用 Assemblies 参数。 默认值是 false
- CopyLocalBoolean 值。 指示给定引用是否应复制到输出目录。
ResolvedDependencyFiles 可选的 ITaskItem[] 只读输出参数。

包含第 n级依赖项路径。 此参数不包括参数中包含的 ResolvedFiles 第一个顺序主引用。

此参数中的项选择性地包含以下项的元数据:

- CopyLocalBoolean 值。 指示给定引用是否应复制到输出目录。
- FusionNameString 值。 指定此依赖项的名称。
- ResolvedFromString 值。 指定已从中解析此文件的文字搜索路径。
ResolvedFiles 可选的 ITaskItem[] 只读输出参数。

包含已解析为完整路径的所有主引用列表。

此参数中的项选择性地包含以下项的元数据:

- CopyLocalBoolean 值。 指示给定引用是否应复制到输出目录。
- FusionNameString 值。 指定此依赖项的名称。
- ResolvedFromString 值。 指定已从中解析此文件的文字搜索路径。
ResolvedSDKReferences 可选 ITaskItem[] 参数。

解析的 SDK 引用列表,其中包含 SDK 名称、SDK 位置和目标配置。 仅当引用 SDKName 附加了元数据时,才会搜索这些位置。
SatelliteFiles 可选的 ITaskItem[] 只读输出参数。

指定找到的任何附属文件。 这些文件是CopyLocal=true导致此项存在的引用或依赖项。CopyLocal=true

此参数中的项选择性地包含以下项的元数据:

- CopyLocalBoolean 值。 指示给定引用是否应复制到输出目录。 如果导致此项存在的引用或依赖项具有为 trueCopyLocal 值,则这个值为 true
- DestinationSubDirectoryString 值。 指定要复制此项到的相对目标目录。
ScatterFiles 可选的 ITaskItem[] 只读输出参数。

包含与某个给定的程序集关联的散点文件。

此参数中的项选择性地包含以下项的元数据:

- CopyLocalBoolean 值。 指示给定引用是否应复制到输出目录。
SearchPaths 必选 String[] 参数。

指定目录或特殊位置,将在其中进行搜索以找到磁盘上表示程序集的文件。 列出搜索路径的顺序非常重要。 对于每个程序集,从左到右搜索路径的列表。 当找到表示该程序集的文件时,该搜索即停止,并且开始搜索下一个程序集。

此参数接受以分号分隔的值列表,这些值可以是目录路径,也可以是下表中的特殊文本值:

- {HintPathFromItem}:指示任务检查 HintPath 基项的元数据。
- {CandidateAssemblyFiles}:指示任务检查通过 CandidateAssemblyFiles 参数传入的文件。
- {Registry:<AssemblyFoldersBase>、 <RuntimeVersion>、 <AssemblyFoldersSuffix>}:指示任务在注册表中指定的其他文件夹中搜索。 <AssemblyFoldersBase>、<RuntimeVersion> 和 <AssemblyFoldersSuffix> 应替换为要搜索的注册表位置的特定值。 常见目标中的默认规范是 {Registry:$(FrameworkRegistryBase)、$(TargetFrameworkVersion)、$(AssemblyFoldersSuffix)、$(AssemblyFoldersExConditions)}。
- {AssemblyFolders}:指示任务使用 Visual Studio.NET 2003 查找程序集-从注册表方案。
- {GAC}:指示任务在全局程序集缓存(GAC)中搜索。
- {RawFileName}:指定任务将项的 Include 值视为确切的路径和文件名。
SerializationAssemblyFiles 可选的 ITaskItem[] 只读输出参数。

包含找到的任何 XML 序列化程序集。 如果导致此项存在的引用或依赖项是 CopyLocal=true,则这些项被标记为 CopyLocal=true。

Boolean 元数据 CopyLocal 指示给定的引用是否应该复制到输出目录。
Silent 可选 Boolean 参数。

如果为 true,则不记录任何信息。 默认值为 false
StateFile 可选 String 参数。

指定一个文件名,该文件名表示用于保存此任务的中间生成状态的位置。
SuggestedRedirects 可选的 ITaskItem[] 只读输出参数。

针对每个不同的冲突程序集标识包含一个项,而不考虑 AutoUnify 参数的值。 这包括发现应用程序配置文件中没有合适 bindingRedirect 条目的每个区域性和 PKT。

每个项选择性地包含以下信息:

- Include 属性:包含具有 Version 字段值的程序集系列的完整名称 0.0.0.0
- MaxVersion 项元数据:包含的最大版本号。
SupportsBindingRedirectGeneration 可选 Boolean 参数。

在支持的项目上将此设置为 true,以自动生成绑定重定向(目前仅 EXE 项目支持)。
TargetedRuntimeVersion 可选 String 参数。

指定设为目标的运行时版本,例如,2.0.57027 或 v2.0.57027。
TargetFrameworkDirectories 可选 String[] 参数。

指定目标框架目录的路径。 此参数是确定 CopyLocal 结果项的状态所必需的。

如果未指定此参数,则不会有任何 CopyLocal 生成的项的值 true ,除非它们在其源项上显式具有 Private 元数据值 true
TargetFrameworkMoniker 可选 String 参数。

TargetFrameworkMoniker 监视的(如果有)。 此参数用于日志记录。
TargetFrameworkMonikerDisplayName 可选 String 参数。

要监视的 TargetFrameworkMoniker 显示名称(如果有)。 此参数用于日志记录。
TargetFrameworkSubsets 可选 String[] 参数。

包含要在目标框架目录中搜索的目标框架子集名称的列表。
TargetFrameworkVersion 可选 String 参数。

项目目标框架版本。 默认值为空,这意味着没有基于目标框架的引用筛选。
TargetProcessorArchitecture 可选 String 参数。

首选的目标处理器架构。 用于解析全局程序集缓存 (GAC) 引用。

此参数可以具有 x86IA64AMD64 的值。

如果缺少此参数,则该任务首先考虑与当前正在运行的进程架构匹配的程序集。 如果未找到程序集,该任务将考虑位于 GAC 中 ProcessorArchitecture 值为 MSIL 或没有 ProcessorArchitecture 值的程序集。
UnresolvedAssemblyConflicts 可选的 ITaskItem[] 只读输出参数。

如果参数 OutputUnresolvedAssemblyConflictstrue,则将此设置为有关未解决的冲突的信息列表,这些冲突通常已输出到 MSB3277 中。 否则为空。
UnresolveFrameworkAssembliesFromHigherFrameworks 可选 Boolean 参数。

如果设置为 true,它会强制版本高于或等于目标框架版本的框架程序集处于未解析状态。
WarnOrErrorOnTargetArchitectureMismatch 可选 String 参数。

如果目标处理器体系结构与主引用的体系结构不匹配,则记录错误 Error时,将记录错误;当记录警告; Warning当记录时 None,不会记录错误或警告。 默认为 Warning

警告

将记录以下警告:

  • ResolveAssemblyReference.TurnOnAutoGenerateBindingRedirects

  • ResolveAssemblyReference.SuggestedRedirects

  • ResolveAssemblyReference.FoundConflicts

  • ResolveAssemblyReference.AssemblyFoldersExSearchLocations

  • ResolveAssemblyReference.UnifiedPrimaryReference

  • ResolveAssemblyReference.PrimaryReference

  • ResolveAssemblyReference.UnifiedDependency

  • ResolveAssemblyReference.UnificationByAutoUnify

  • ResolveAssemblyReference.UnificationByAppConfig

  • ResolveAssemblyReference.UnificationByFrameworkRetarget

备注

除上面列出的参数外,此任务还从 TaskExtension 类继承参数,后者自身继承自 Task 类。 有关这些其他参数的列表及其说明的信息,请参阅 TaskExtension 基类

请参阅