ResolveAssemblyReference 任务

确定依赖指定程序集的所有程序集,其中包括第二级和第 n 级的依赖项。

参数

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

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

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

要用于搜索彼此相互关联的文件的文件扩展名。 默认扩展名是 .pdb 和 .xml。
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 值。 仅当项具有空的子类型元数据时才解析为完整的程序集路径。 具有非空子类型元数据的项将被忽略。
- 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),它不能有一个普通的 App.Config 文件。

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

当为 true时,每个不同的重映射将导致高优先级注释,显示新旧版本以及 AutoUnifytrue

当为 true 时,AppConfigFile 参数必须为空。

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

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

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

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

SearchPaths 参数包含 {CandidateAssemblyFiles} 作为要考虑的路径之一时,将会考虑此列表中的程序集。
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”元数据的项以关联 redist 列表与特定的框架目录。 如不进行关联,则将记录错误。 如未设置 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

与特定的框架目录。

如果只有一个 TargetFrameworkDirectories 元素,则对于此列表中缺少“FrameworkDirectory”元数据的任何项,我们将其视为好像它们被设置为传递到 TargetFrameworkDirectories的唯一值。
InstalledAssemblyTables 可选 String 参数。

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

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

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

“Microsoft-Windows-CLRCoreComp”开头。

如果只有一个 TargetFrameworkDirectories 元素,则对于此列表中缺少“FrameworkDirectory”元数据的任何项,我们将其视为好像它们被设置为传递到

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 finding-assemblies-from-registry(从注册表查找程序集)方案。
- {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 属性:包含版本字段值为 0.0.0.0 的程序集系列的完整名称
- MaxVersion 项元数据:包含的最大版本号。
SupportsBindingRedirectGeneration 可选 Boolean 参数。

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

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

指定目标框架目录的路径。 需要此参数来确定生成的项的 CopyLocal 状态。

如果未指定此参数,则没有生成的项将具有为 true 的 CopyLocal 值,除非在其源项上显式具有为 truePrivate 元数据值。
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 基类

请参阅