获取一个或多个类型库名称或 .tlb 文件的列表,并将这些类型库解析为磁盘上的位置。
Parameters
下表描述了 ResolveCOMReference
任务的参数。
Parameter | Description |
---|---|
DelaySign |
可选 Boolean 参数。如果 true 为程序集中,则为公钥。 如果 false 为程序集完全签名,则为程序集签名。 |
EnvironmentVariables |
可选 String[] 参数。环境变量对数组,用等号分隔。 除了有选择地替代常规环境块 之外 ,这些变量还会传递给生成的 tlbimp.exe和aximp.exe 。 |
ExecuteAsTool |
可选 Boolean 参数。如果 true ,请从适当的目标框架外运行 tlbimp.exe 和 aximp.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 :不确定是否Primary TLBImp 合适时使用此包装器工具。 首先 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 版本。