ResolveAssemblyReference 任务

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

参数

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

Parameter

说明

AllowedAssemblyExtensions

可选 String[] 参数。

解析引用时要使用的程序集文件扩展名。 默认文件扩展名为 .exe 和 .dll。

AllowedRelatedFileExtensions

可选 String[] 参数。

在搜索相互关联的文件时使用的文件扩展名。 默认文件扩展名为 .pdb 和 .xml。

AppConfigFile

可选 String 参数。

指定一个用于分析和提取 bindingRedirect 映射的 app.config 文件。 如果指定了此参数,则 AutoUnify 参数必须为 false。

AutoUnify

可选 Boolean 参数。

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

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

true 时,每个不同的重映射都将导致生成一条高优先级注释,显示旧版本和新版本以及 AutoUnifytrue

true 时,AppConfigFile 参数必须为空。

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

当为 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 特性中的值。 如果该特性为简单名称,则其行为与 SpecificVersion 为 false 时相同。 如果该特性为强名称,则其行为与 SpecificVersion 为 true 时相同。

    与“引用”项目类型一起使用时,Include 特性必需是要解析的程序集的完整合成名称。 程序集只有在合成与 Include 特性完全匹配的情况下才能解决。

    当项目面向 .NET Framework 版本并引用针对 .NET Framework 的更高版本编译的程序集时,该引用只有在将 SpecificVersion 设置为 true 的情况下才进行解析。

    当项目面向配置文件并引用未包含在该配置文件中的程序集时,该引用只有在将 SpecificVersion 设置为 true 的情况下才进行解析。

  • ExecutableExtensionString 值。 如果存在,则解析后的程序集必须具有此扩展名。 如果不存在,则对于所检查的每个目录,首先考虑 .dll,然后考虑 .exe。

  • SubTypeString 值。 只有具有空的 SubType 元数据的项才会解析为完整程序集路径。 具有非空 SubType 元数据的项将被忽略。

  • AssemblyFolderKeyString 值。 支持此元数据是出于向后兼容的目的。 它指定一个用户定义的注册表项,例如“hklm\供应商文件夹”,Assemblies 应使用该注册表项解析程序集引用。

AssemblyFiles

可选 ITaskItem[] 参数。

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

传递到此参数的项可以具有下面的项元数据:

  • Private:可选的 Boolean 值。 如果为 true,则会在本地复制该项。

  • FusionName:可选的 String 元数据。 为该项指定简单名称或强名称。 如果此特性存在,则可节省时间,因为无需打开程序集文件即可获取名称。

AutoUnify

可选 Boolean 参数。

如果为 true,则会自动处理最后所得到的依赖项关系图,如同向 AppConfigFile 参数传递了 App.Config 文件一样。 此虚拟 App.Config 文件对于每组冲突的程序集都有一个 bindingRedirect 项,以便选择最高版本的程序集。 这样做的一个结果是,永远不会就程序集冲突发出警告,因为每个冲突都将得到解决。 每个不同的重映射都将导致生成一条高优先级注释,指出旧版本和新版本,实际上因为 AutoUnify 为 true,所以这是自动完成的。

如果为 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 的每个文件。

FilesWritten

可选 ITaskItem[] 输出参数。

包含写入到磁盘的项。

FindDependencies

可选 Boolean 参数。

如果为 true,将查找依赖项。 否则,将只查找主引用。 默认值为 true。

FindRelatedFiles

可选 Boolean 参数。

如果为 true,将查找相关的文件,如 .pdb 文件和 .xml 文件。 默认值为 true。

FindSatellites

可选 Boolean 参数。

如果为 true,将查找附属程序集。 默认值为 true.

FindSerializationAssemblies

可选 Boolean 参数。

如果为 true,则该任务将搜索序列化程序集。 默认值为 true。

FullFrameworkAssemblyTables

可选 ITaskItem[] 参数。

指定有“FrameworkDirectory”元数据的项,以便将 redist 列表与特定框架目录关联。 如果没有进行关联,将会记录错误。 如果没有设置 FrameworkDirectory,则解析程序集引用 (RAR) 逻辑将使用目标框架目录。

FullFrameworkFolders

可选 [String][] 参数。

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

FullTargetFrameworkSubsetNames

可选 String[] 参数。

包含目标框架子集名称的列表。 如果此列表中的某个子集名称与 TargetFrameworkSubset 名称属性中的某个名称匹配,则系统在生成时将排除该特定目标框架子集。

IgnoreDefaultInstalledAssemblyTables

可选 Boolean 参数。

如果为 true,则该任务将搜索并使用在 TargetFrameworkDirectories 下的 \RedistList 目录中找到的其他已安装的程序集表(或“Redist Lists”)。 默认值为 false.

IgnoreDefaultInstalledAssemblySubsetTables

可选 Boolean 参数。

如果为 true,则该任务将搜索并使用在 TargetFrameworkDirectories 下的 \SubsetList 目录中找到的其他已安装的程序集子集表(或“Subset Lists”)。 默认值为 false.

InstalledAssemblySubsetTables

可选 ITaskItem[] 参数。

包含 XML 文件的列表,这些 XML 文件指定应存在于目标子集中的程序集。

根据需要,此列表中的项可以指定“FrameworkDirectory”元数据,以便将 InstalledAssemblySubsetTable

与特定的框架目录关联。

如果只有一个 TargetFrameworkDirectories 元素,则会将此列表中缺少“FrameworkDirectory”元数据的任何项视为设置为传递给 TargetFrameworkDirectories 的唯一值。

InstalledAssemblyTables

可选 String 参数。

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

设置了 InstalledAssemblyTables 时,此列表中程序集的早期版本会合并到该 XML 中列出的较新版本中。 此外,具有 InGAC='true' 设置的程序集将被视为必备,并设置为 CopyLocal='false'(除非显式重写)。

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

“Microsoft-Windows-CLRCoreComp”开头,否则将会忽略此设置。

如果只有一个 TargetFrameworkDirectories 元素,则会将此列表中缺少“FrameworkDirectory”元数据的任何项视为设置为传递给

TargetFrameworkDirectories 的唯一值。

LatestTargetFrameworkDirectories

可选 String[] 参数。

指定目录列表,这些目录包含面向计算机的最新框架的 redist 列表。 如果不对此进行设置,则将使用针对给定的目标框架标识符安装在计算机上的最高框架。

ProfileName

可选 [String] 参数。

  • 指定要面向的框架配置文件的名称。 例如,客户端、Web 或网络。

RelatedFiles

可选 ITaskItem[] 只读输出参数。

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

此参数中列出的文件可以包含下面的项元数据:

  • PrimaryBoolean 值。 如果为 true,则说明该文件项是使用 Assemblies 参数传入数组的。 默认值为 false。

  • CopyLocalBoolean 值。 指示是否应当将给定的引用复制到输出目录。

ResolvedDependencyFiles

可选 ITaskItem[] 只读输出参数。

包含依赖项的第 n 级路径。 此参数不包括第一级主引用,此类引用包含在 ResolvedFiles 参数中。

此参数中的项可以包含以下项元数据:

  • CopyLocalBoolean 值。 指示是否应当将给定的引用复制到输出目录。

  • FusionNameString 值。 指定此依赖项的名称。

  • ResolvedFromString 值。 指定从中解析此文件的文本搜索路径。

ResolvedFiles

可选 ITaskItem[] 只读输出参数。

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

此参数中的项可以包含以下项元数据:

  • CopyLocalBoolean 值。 指示是否应当将给定的引用复制到输出目录。

  • FusionNameString 值。 指定此依赖项的名称。

  • ResolvedFromString 值。 指定从中解析此文件的文本搜索路径。

SatelliteFiles

可选 ITaskItem[] 只读输出参数。

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

此参数中的项可以包含以下项元数据:

  • CopyLocalBoolean 值。 指示是否应当将给定的引用复制到输出目录。 如果导致此项存在的引用或依赖项的 CopyLocal 值为 true,则该值为 true。

  • DestinationSubDirectoryString 值。 指定此项要复制到的相对目标目录。

ScatterFiles

可选 ITaskItem[] 只读输出参数。

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

此参数中的项可以包含以下项元数据:

  • CopyLocalBoolean 值。 指示是否应当将给定的引用复制到输出目录。

SearchPaths

必选 String[] 参数。

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

此参数接受以下类型的值:

  • 目录路径。

  • {HintPathFromItem}:指定任务将检查基项的 HintPath 元数据。

  • {CandidateAssemblyFiles}:指定任务将检查通过 CandidateAssemblyFiles 参数传入的文件。

  • {Registry:_AssemblyFoldersBase_, _RuntimeVersion_, _AssemblyFoldersSuffix_}:

  • {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 特性:包含“版本”字段值为 0.0.0.0 的程序集族的完整名称。

  • MaxVersion 项元数据:包含最大版本号。

TargetedRuntimeVersion

可选 String 参数。

指定要面向的运行时版本,例如,2.0.57027 或 v2.0.57027。

TargetFrameworkDirectories

可选 String[] 参数。

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

如果未指定此参数,那么,除非所得到的项在其源项上显式拥有 Private 元数据值 true,否则所得到的项中将没有任何项具有 CopyLocal 值 true。

TargetFrameworkMoniker

可选 String 参数。

要监视的 TargetFrameworkMoniker(如果有)。 这用于日志记录。

TargetFrameworkMonikerDisplayName

可选 String 参数。

要监视的 TargetFrameworkMoniker 的显示名称(如果有)。 这用于日志记录。

TargetFrameworkSubsets

可选 String[] 参数。

包含要在目标框架目录中搜索的目标框架子集名称的列表。

TargetFrameworkVersion

可选 String 参数。

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

TargetProcessorArchitecture

可选 String 参数。

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

此参数的值可以为 x86IA64AMD64

如果缺少此参数,该任务将首先考虑与当前运行的进程的体系结构匹配的程序集。 如果没有找到程序集,则该任务考虑 GAC 中 ProcessorArchitecture 值为 MSIL 或没有 ProcessorArchitecture 值的程序集。

备注

除了上面列出的参数,此任务还将从 TaskExtension 类继承参数,此类本身从 Task 类继承。 有关这些附加参数及其说明的列表,请参见 TaskExtension 基类

请参见

概念

MSBuild 任务

其他资源

MSBuild 任务参考