可以非现场构建 C#/COM 解决方案吗?

off-site build of C# / COM solution possible?

我在集成服务器上工作,现在我想构建一个引用 COM 库的 C#.NET 4.5 解决方案。 CI 机器上未安装 COM 对象。

我手边有一个 .tlb 文件。我已经使用 tlbimp.exe 创建了 .dll 并将引用包含在 .csproj 文件中:

  <ItemGroup>
    <COMReference Include="myComName">
      <Guid>{theGUID}</Guid>
      <VersionMajor>1</VersionMajor>
      <VersionMinor>0</VersionMinor>
      <Lcid>0</Lcid>
      <WrapperTool>tlbimp</WrapperTool>
      <Isolated>False</Isolated>
      <EmbedInteropTypes>True</EmbedInteropTypes>
    </COMReference>
  </ItemGroup>

但是,构建会引发以下警告

   warning MSB3284: Cannot get the file path for type library "<theGUID>" version 1.0. Library not registered. (Exception from HRESULT: 0x8002801D (TYPE_E_LIBNOTREGISTERED))

是的,没有注册。我宁愿让编译器和链接器从生成的 .dll 文件中获取所需的类型信息。

有没有办法在不注册 COM .dll 的情况下继续构建?

谢谢!莱因哈特

我必须先删除对已注册 COM 接口的引用。然后,.dll 工作正常。 谢谢解答!