ResolveComReference task

获取一个或多个类型库名称或 .tlb 文件的列表,并将这些类型库解析为磁盘上的位置。

Parameters

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

Parameter Description
DelaySign 可选 Boolean 参数。

如果 true为程序集中,则为公钥。 如果 false为程序集完全签名,则为程序集签名。
EnvironmentVariables 可选 String[] 参数。

环境变量对数组,用等号分隔。 除了有选择地替代常规环境块 之外 ,这些变量还会传递给生成的 tlbimp.exe和aximp.exe
ExecuteAsTool 可选 Boolean 参数。

如果 true,请从适当的目标框架外运行 tlbimp.exeaximp.exe,以生成必要的包装程序集。 此参数启用多目标。
IncludeVersionInInteropName 可选 Boolean 参数。

如果 true为类型库版本,则包含在包装器名称中。 默认值为 false
KeyContainer 可选 String 参数。

指定保存公钥/私钥对的容器。
KeyFile 可选 String 参数。

指定包含公钥/私钥对的项。
NoClassMembers 可选 Boolean 参数。
ResolvedAssemblyReferences 可选 ITaskItem[] 输出参数。

指定解析的程序集引用。
ResolvedFiles 可选 ITaskItem[] 输出参数。

指定磁盘上的完全限定文件,这些文件对应于作为此任务的输入提供的类型库的物理位置。
ResolvedModules 可选 ITaskItem[]参数。
SdkToolsPath 可选 System.String 参数。

true如果是ExecuteAsTool,则必须将此参数设置为目标框架版本的 SDK 工具路径。
StateFile 可选 String 参数。

指定 COM 组件时间戳的缓存文件。 如果不存在,则每次运行都会重新生成所有包装器。
TargetFrameworkVersion 可选 String 参数。

指定项目目标框架版本。

默认值为 String.Empty。 这意味着没有基于目标框架的引用筛选。
TargetProcessorArchitecture 可选 String 参数。

指定首选目标处理器体系结构。 转换后传递给 tlbimp.exe/machine 标志。

参数值应是 . 的 ProcessorArchitecture一个成员。
TypeLibFiles 可选 ITaskItem[] 参数。

指定 COM 引用的类型库文件路径。 此参数中包含的项可能包含项元数据。 有关详细信息,请参阅 TypeLibFiles 项元数据部分。
TypeLibNames 可选 ITaskItem[] 参数。

指定要解析的类型库名称。 此参数中包含的项必须包含一些项元数据。 有关详细信息,请参阅 TypeLibNames 项元数据部分。
WrapperOutputDirectory 可选 String 参数。

放置生成的互作程序集的磁盘上的位置。 如果未指定此项元数据,任务将使用项目文件所在的目录的绝对路径。

TypeLibNames 项元数据

下表描述了可用于传递给参数的项的 TypeLibNames 项元数据。

Metadata Description
GUID 所需的项元数据。

类型库的 GUID。 如果未指定此项元数据,任务将失败。
VersionMajor 所需的项元数据。

类型库的主版本。 如果未指定此项元数据,任务将失败。
VersionMinor 所需的项元数据。

类型库的次版本。 如果未指定此项元数据,任务将失败。
EmbedInteropTypes 可选 Boolean 元数据。

如果 true,请将此引用中的互作类型直接嵌入程序集,而不是生成互作 DLL。
LocaleIdentifier 可选项元数据。

类型库的区域设置标识符(或 LCID)。 此标识符被指定为 32 位值,用于标识用户、区域或应用程序首选的人类语言。 如果未指定此项元数据,则任务使用默认区域设置标识符“0”。
WrapperTool 可选项元数据。

指定用于为此类型库生成程序集包装器的包装器工具。 如果未指定此项元数据,任务将使用默认包装器工具“tlbimp”。类型库的可用不区分大小写的选择如下:

- Primary:如果要为 COM 组件使用已生成的主互作程序集,请使用此包装器工具。 使用此包装器工具时,请不要指定包装器输出目录,因为这会导致任务失败。
- TLBImp:如果要为 COM 组件生成互作程序集,请使用此包装器工具。
- PrimaryOrTLBImp:不确定是否PrimaryTLBImp合适时使用此包装器工具。 首先 Primary 应用逻辑,然后 TLBImp应用该逻辑。
- AXImp:若要为 ActiveX 控件生成互作程序集,请使用此包装器工具。

TypeLibFiles 项元数据

下表描述了可用于传递给参数的项的 TypeLibFiles 项元数据。

Metadata Description
EmbedInteropTypes 可选 Boolean 参数。

如果 true,请将此引用中的互作类型直接嵌入程序集,而不是生成互作 DLL。
WrapperTool 可选项元数据。

指定用于为此类型库生成程序集包装器的包装器工具。 如果未指定此项元数据,任务将使用默认包装器工具“tlbimp”。类型库的可用不区分大小写的选择如下:

- Primary:如果要为 COM 组件使用已生成的主互作程序集,请使用此包装器工具。 使用此包装器工具时,请不要指定包装器输出目录,因为这会导致任务失败。
- TLBImp:如果要为 COM 组件生成互作程序集,请使用此包装器工具。
- AXImp:若要为 ActiveX 控件生成互作程序集,请使用此包装器工具。

Note

为了唯一标识类型库而提供的详细信息,任务解析为磁盘上正确的文件的可能性就越大。

Remarks

除了本文中列出的参数外,此任务还从 Task 类继承参数。 有关这些附加参数及其说明的列表,请参阅 Task 基类

无需在计算机上注册 COM DLL,才能使此任务正常工作。

MSB4803 Error

如果尝试从 dotnet CLI 命令运行使用该ResolveCOMReference任务的项目,则会收到错误:

MSB4803: The task "ResolveComReference" is not supported on the .NET Core version of MSBuild. Please use the .NET Framework version of MSBuild.

MSBuild 的 .NET Core 版本不支持此任务,这是从命令行运行 dotnet build 命令时使用的任务。 尝试通过从 Visual Studio 开发人员命令提示符调用 MSBuild.exe 来生成项目,因为此可执行文件使用 MSBuild 的 .NET Framework 版本。