ResolveComReference 任务

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

参数

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

参数 说明
DelaySign 可选 Boolean 参数。

如果为 true,任务会在程序集中放入公钥。 如果为 false,任务会对程序集进行完全签名。
EnvironmentVariables 可选 String[] 参数。

环境变量对的数组(使用等号分隔)。 这些变量会传递给生成的 tlbimp.exe 和 aximp.exe 以及常规环境块,或有选择地重写常规环境块。
ExecuteAsTool 可选 Boolean 参数。

如果为 true,请于进程外从适当的目标框架运行 tlbimp.exe 和 aximp.exe 来生成所需的包装器程序集。 此参数支持多目标。
IncludeVersionInInteropName 可选 Boolean 参数。

如果为 true,包装器名称中将包含 TypeLib 版本。 默认值为 false
KeyContainer 可选 String 参数。

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

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

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

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

如果 ExecuteAsTooltrue,则必须将此参数设置为作为目标的框架版本的 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 参数的项可用的项元数据。

元数据 描述
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 参数的项可用的项元数据。

元数据 描述
EmbedInteropTypes 可选 Boolean 参数。

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

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

- Primary:如果希望使用已为 COM 组件生成的主互操作程序集,请使用此包装工具。 使用此包装工具时,请勿指定包装器输出目录,否则任务会失败。
- TLBImp:如果希望为 COM 组件生成互操作程序集,请使用此包装工具。
- AXImp:如果希望为 ActiveX 控件生成互操作程序集,请使用此包装工具。

注意

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

备注

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

不需要在计算机上注册 COM DLL 来使此任务正常工作。

MSB4803 错误

如果尝试通过 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 版本。

请参阅