【发布时间】:2021-04-13 08:32:24
【问题描述】:
我在我的项目中使用了一个 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 也无法找到命名空间。其中一篇文章建议使用COMFileReference 而不是COMReference,但最终会出现相同的“未找到命名空间”错误。
我怎样才能使管道工作?
【问题讨论】:
-
当您手动使用
tlbImp时,您是否使用了它的/namspace:GENERALCREDITREQUESTMANAGER450Lib选项? - Reference -
@MartinUllrich:就是这样!非常感谢!如果您将其发布为答案,我将接受它作为答案。
标签: azure-pipelines csproj azure-pipelines-build-task