【问题标题】:TFS Build server and COM references - does this work?TFS 构建服务器和 COM 引用 - 这有效吗?
【发布时间】:2011-11-21 19:58:44
【问题描述】:

在我的开发人员 PC 上,我已经注册了相应的 dll 并引用了它们。 (添加参考-> COM) 在 TFS 构建服务器上,这当然会导致错误,因为引用没有在那里注册,将来也不会。

规避此问题的最佳方法是什么?

【问题讨论】:

标签: com tfs build reference


【解决方案1】:

好的,答案比人们想象的要容易。 只需使用“tlbimp.exe”创建一个相应的 intrerop.dll,您将其包含在您的项目中,并引用此 dll 而不是 COM 对象。

您可以使用 tlbimp.exe 节省时间,因为 Visual Studio 会在您引用 COM 对象时自动创建此 dll。 但它不会将其上传到 TFS。所以最后我只是使用了自动创建的 dll 并且 TFS 构建服务器很开心。

可以在以下位置找到自动创建的 Interop dll:“ProjectFolder\obj\x86\Development”

【讨论】:

  • 这确实帮助了我使用应用服务器上已经存在的仅供参考的互操作 dll。 VS 2019 只会添加一个没有提示路径的 COMReference,这不适用于 Azure DevOps 管道构建。将 tlbimp 处理的 DLL 从 obj 文件夹中取出可以完美地工作。
【解决方案2】:

不需要直接使用 tlbimp.exe。尝试用<COMFileReference> 替换项目文件中的任何<COMReference> 项。一个示例如下所示:

<ItemGroup>
   <COMFileReference Include="MyComLibrary.dll">
     <EmbedInteropTypes>True</EmbedInteropTypes>
   </COMFileReference>
</ItemGroup>

COM dll 不需要在机器上注册就可以工作。

每个 COMFileReference 项也可以有一个 WrapperTool 属性,但默认值似乎可以正常工作。 EmbedInteropTypes 属性未记录为适用于 COMFileReference,但它似乎按预期工作。

有关更多详细信息,请参阅https://docs.microsoft.com/en-ca/visualstudio/msbuild/common-msbuild-project-items#comfilereference。此 MSBuild 项自 .NET 3.5 起可用。

【讨论】:

  • 感谢提示,似乎更专业的解决方案
【解决方案3】:

对于命名空间有问题的人:

tl;dr: 使用 tlbImp /namespace: YOUR_NAMESPACE 给你的 dll 一个命名空间


这个solution 也适用于 Azure Pipeline。但起初我在使用 COMFileReference 时遇到了麻烦。当我用 COMFileReference 替换 COMReference 时,我的 VS 构建失败说“找不到命名空间”。终于找到了解决办法here

我使用 tlbImp 在 article 之后使用 /namespace 属性生成 COM 文件的 dll。只有这样你才能使用COMFileReference中的dll。这是一个有点复杂的例子:

<ItemGroup>
   <COMFileReference Include="My/Folder/MyComLibrary.dll">
     <EmbedInteropTypes>True</EmbedInteropTypes>
   </COMFileReference>
</ItemGroup>

<ItemGroup>
   <COMFileReference Include="..\My\parent\folder\MyComLibrary.dll">
     <EmbedInteropTypes>True</EmbedInteropTypes>
   </COMFileReference>
</ItemGroup>

【讨论】:

    猜你喜欢
    • 2014-04-01
    • 2018-03-11
    • 1970-01-01
    • 2014-11-12
    • 1970-01-01
    • 2013-05-11
    • 1970-01-01
    • 2011-11-19
    • 1970-01-01
    相关资源
    最近更新 更多