【问题标题】:Error: The assembly "c:\MyAssembly.dll" could not be converted to a type library错误:程序集“c:\MyAssembly.dll”无法转换为类型库
【发布时间】:2010-08-23 07:44:50
【问题描述】:

我正在尝试构建我的项目,但当项目构建并勾选“注册 COM 互操作”属性时,我突然开始收到以下错误。

程序集“c:\MyAssembly.dll”无法转换为类型库。类型库导出器在处理“SomeType,MyAssembly”时遇到错误。错误:在托管组件中定义了引用类型,该组件是从无法加载的类型库中导入的(类型:'OtherType';组件:'c:\OtherAssembly.dll')。

团队中没有其他人遇到此错误,只有我!显然,我对我的机器做了一些奇怪的事情,但是完全删除/删除和重新添加我能想到的所有东西的蛮力方法没有任何区别,所以我不得不真正理解这个错误(真是个拖累!)

所以:

  • 这个错误实际上是什么意思
  • 接下来我应该在哪里寻找关于问题的更多/更具体的诊断信息?

【问题讨论】:

  • 1.该项目是否有任何未在您的机器上正确配置的外部依赖项? 2.OtherType 长什么样子?
  • @jgauffin,恐怕你需要更具体一些 - 1.我的猜测是肯定的,因为它坏了,2.它是一个界面,除此之外我不知道有任何显着的特点。

标签: .net build-error typelib


【解决方案1】:

我有这个问题。我只是做了同样的事情,gactutil /u(用于卸载)和gacutil /i(用于安装),问题就解决了

【讨论】:

    【解决方案2】:

    就我而言,我有一个使用 regasm 注册的 com 暴露 dll(我更改了 guid)。我必须使用以下命令取消注册程序集,然后才能成功构建项目。

    c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC>regasm /u "C:\some-vs-project\bin\Debug\some-vs-dll.dll"
    

    此外,如果您更改了 GUID,您需要确保您在 assembly.cs 中使用的 GUID 与您在课堂上使用的 GUID 不同。我在类声明和程序集中使用了相同的 GUID,这也会导致相同的错误。

    【讨论】:

    • 谢谢谢谢谢谢!关于重用 guid 的最后一部分也解决了我的问题。 :)
    【解决方案3】:

    就我而言,发生此错误是因为我通过 regsvr32 手动注册了 COM 服务器。当我后来移动包含 dll 的文件夹时,我忘记更新注册表(即注销并重新注册 COM 服务器)。

    重新注册服务器修复了错误。

    【讨论】:

      【解决方案4】:

      我遇到了完全相同的问题。它是通过将目标平台从 x86 更改为 Any CPU 来神奇地修复的

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-14
        • 1970-01-01
        • 2020-08-22
        • 2013-03-15
        • 2021-07-22
        • 2012-12-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多