Share via


ResolveAssemblyReference 任务

更新:2007 年 11 月

确定依赖指定程序集的所有程序集。包括第二和第 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 属性中的值。如果该属性为简单名称,则其行为与 SpecificVersion 为 false 时相同。如果该属性为强名称,则其行为与 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} 作为要考虑的路径之一时,将考虑此列表中的程序集。

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。

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 的唯一值。

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 值视为确切的路径和文件名。

Silent

可选的 Boolean 参数。

如果为 true,将不记录任何消息。默认值为 false。

StateFile

可选的 String 参数。

指定一个文件名,该文件名指示保存此任务的中间生成状态的位置。

SuggestedRedirects

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

无论 AutoUnify 参数的值如何,对于每个不同的冲突程序集标识都包含一项。这包括已找到的、在应用程序配置文件中没有相应的 bindingRedirect 项的每个区域性和 PKT。

每一项都可以包含以下信息:

  • Include 属性:包含“版本”字段值为 0.0.0.0 的程序集族的完整名称。

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

TargetFrameworkDirectories

可选的 String[] 参数。

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

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

TargetFrameworkSubsets

可选的 String[] 参数。

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

TargetFrameworkVersion

可选的 String 参数。

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

TargetProcessorArchitecture

可选的 String 参数。

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

此参数的值可以为 x86IA64AMD64

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

请参见

概念

MSBuild 任务

其他资源

MSBuild 任务参考

修订记录

日期

修订

原因

2008 年 7 月

添加以下参数:

  • AllowedAssemblyExtensions

  • AllowedRelatedFileExtensions

  • FindSerializationAssemblies

  • FullTargetFrameworkSubsetNames

  • IgnoreDefaultInstalledAssemblyTables

  • IgnoreDefaultInstalledAssemblySubsetTables

  • InstalledAssemblySubsetTables

  • InstalledAssemblyTables

  • TargetFrameworkSubsets

  • TargetFrameworkVersion

SP1 功能更改。