如何使COMReference在Azure CI/CD管道中工作



我在我的项目中使用了一个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。

环顾四周后,我发现这篇文章基本上说使用tlbImp生成dll,然后使用以下语法引用该dll:

<Reference Include="GENERALCREDITREQUESTMANAGER450Lib">
<HintPath>InteropAssembliesGENERALCREDITREQUESTMANAGER450Lib.dll</HintPath>
<EmbedInteropTypes>true</EmbedInteropTypes>
</Reference>

但如果我这样做,那么我的visual studio构建就会失败,因为VS即使添加到引用中也找不到命名空间。其中一篇帖子建议使用CCD_ 4而不是CCD_;未找到命名空间";错误

我怎样才能使管道工作?

COMReference项要求库在构建服务器上注册,这可能很难做到,具体取决于环境。

在本地使用tlbimp并将生成的.dll添加到项目源的方法可能更适合您的设置,尽管它要求您将名称空间作为参数(/namspace:GENERALCREDITREQUESTMANAGER450Lib(传递以获得与COMReference相同的结果。

最新更新