如何使 COMReference 在 Azure CI/CD 管道中工作
How to make COMReference work in Azure CI/CD pipeline
我在我的项目中使用了一个 dll,它作为 COMReference
添加到我的项目文件中,如下所示
<COMReference Include="GENERALCREDITREQUESTMANAGER450Lib">
<Guid>{BDB6DDB5-5C02-492F-954E-68ED3D8F075D}</Guid>
<VersionMajor>1</VersionMajor>
<VersionMinor>0</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>tlbimp</WrapperTool>
<Isolated>False</Isolated>
<EmbedInteropTypes>True</EmbedInteropTypes>
</COMReference>
现在的问题是它在我的管道构建过程中失败,说 Namespace or type GENERALCREDITREQUESTMANAGER450Lib can't be found
这是可以理解的,因为与其他参考不同,它没有任何 HintPath
来定位 dll。
环顾四周后,我发现这个 article 基本上说使用 tlbImp 生成 dll,然后使用以下语法引用该 dll:
<Reference Include="GENERALCREDITREQUESTMANAGER450Lib">
<HintPath>InteropAssemblies\GENERALCREDITREQUESTMANAGER450Lib.dll</HintPath>
<EmbedInteropTypes>true</EmbedInteropTypes>
</Reference>
但是如果我这样做,那么我的 visual studio 构建就会失败,因为即使它被添加到引用中,VS 也找不到命名空间。 post 之一建议使用 COMFileReference
而不是 COMReference
,但最终会出现相同的“未找到命名空间”错误。
如何使管道工作?
COMReference
项目要求库在构建服务器上注册,这可能很难做到,具体取决于环境。
在本地使用 tlbimp
并将生成的 .dll 添加到项目源的方式可能更适合您的设置,尽管它需要您将命名空间作为参数传递 (/namspace:GENERALCREDITREQUESTMANAGER450Lib
)获得与 COMReference
.
相同的结果
我在我的项目中使用了一个 dll,它作为 COMReference
添加到我的项目文件中,如下所示
<COMReference Include="GENERALCREDITREQUESTMANAGER450Lib">
<Guid>{BDB6DDB5-5C02-492F-954E-68ED3D8F075D}</Guid>
<VersionMajor>1</VersionMajor>
<VersionMinor>0</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>tlbimp</WrapperTool>
<Isolated>False</Isolated>
<EmbedInteropTypes>True</EmbedInteropTypes>
</COMReference>
现在的问题是它在我的管道构建过程中失败,说 Namespace or type GENERALCREDITREQUESTMANAGER450Lib can't be found
这是可以理解的,因为与其他参考不同,它没有任何 HintPath
来定位 dll。
环顾四周后,我发现这个 article 基本上说使用 tlbImp 生成 dll,然后使用以下语法引用该 dll:
<Reference Include="GENERALCREDITREQUESTMANAGER450Lib">
<HintPath>InteropAssemblies\GENERALCREDITREQUESTMANAGER450Lib.dll</HintPath>
<EmbedInteropTypes>true</EmbedInteropTypes>
</Reference>
但是如果我这样做,那么我的 visual studio 构建就会失败,因为即使它被添加到引用中,VS 也找不到命名空间。 post 之一建议使用 COMFileReference
而不是 COMReference
,但最终会出现相同的“未找到命名空间”错误。
如何使管道工作?
COMReference
项目要求库在构建服务器上注册,这可能很难做到,具体取决于环境。
在本地使用 tlbimp
并将生成的 .dll 添加到项目源的方式可能更适合您的设置,尽管它需要您将命名空间作为参数传递 (/namspace:GENERALCREDITREQUESTMANAGER450Lib
)获得与 COMReference
.