【问题标题】:Build Warnings Related to COM Reference (Version 1.0 Type Library) and VS 2010与 COM 参考(版本 1.0 类型库)和 VS 2010 相关的构建警告
【发布时间】:2013-04-03 19:51:27
【问题描述】:

我刚刚完成了从 Visual Studio 2008 到 Visual Studio 2010 的一系列 C# 项目的重组和升级。此外,所有项目都已更改为面向 .NET 4.0 运行时。一切都成功构建,但是,我现在收到一堆与我的应用程序所依赖的 COM 引用相关的警告。警告之一如下。每次构建解决方案时,我都会收到近 100 个类似于以下警告的警告。

Warning 60  Type library importer encountered a property getter 'ClearTopCardQue' on type 'FuelDirectOLETLB.FuelDirectOLE' without a valid return type.  The importer will attempt to import this property as a method instead. c:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets  1558    9   FDServer

我已致电编写我引用的对象的第 3 方供应商,但无济于事。他们建议我确保我的目标是 x86。他们还说我应该能够针对任何版本的 .NET 运行时构建我的项目。就个人而言,我怀疑这与我在 Visual Studio 2010 / .NET Runtime 4.0 中引用版本 1 类型库这一事实有关,而在我构建 VS 2008 / .NET Runtime 3.5 之前。我已尝试针对所有构建配置(即 x86、x64、任何 Cpu)进行构建,并尝试将运行时的每个版本恢复为 2.0。这些警告与我有关,因为我不确定它们表示什么。有人可以提出任何建议/建议来帮助我找到这些警告的原因吗?

【问题讨论】:

  • 供应商需要更新自己的库以支持 .NET 4.0 框架,当然警告本身也可以忽略。

标签: c# ole


【解决方案1】:

这是一个良性警告,无需担心。他们只是没有正确地为组件编写 IDL。 COM 中的属性 getter 是方法,就像它们在 .NET 中一样。该方法必须具有适当的签名和属性才能被视为可以直接转换为 .NET 属性的有效属性。

这有时会出错。一个很好的例子是 Windows Media Player。从临时目录中的 Visual Studio 命令提示符运行此命令:

  Tlbimp.exe c:\windows\system32\wmp.dll

你会看到:

TlbImp : 警告 TI0000 : 类型库导入器遇到一个属性 类型上的 getter 'sessionPlaylistCount' 'WMPLib.IWMPNowPlayingHelperDispatch' 没有有效的返回类型。 导入器将尝试将此属性作为方法导入 而是。
导入到 WMPLib.dll 的类型库

下一个类型:

  Oleview.exe c:\windows\system32\wmp.dll

这会将类型库反编译回 IDL。选择右窗格中的文本并将其复制/粘贴到文本编辑器中。找到“sessionPlaylistCount”,你会看到:

[id(0x00000ba3), propget]
HRESULT sessionPlaylistCount([out] long* pVal);

当你将它与其他属性进行比较时,你会发现错误,他们忘记了 [retval] 属性。

这不是问题,因为 Tlbimp.exe 只会将其变成方法而不是属性。你会写 get_sessionPlaylistCount(out count) 来使用损坏的属性。这很不方便,因为语法很笨拙,但在其他方面不是问题。

【讨论】:

  • 汉斯,这是一个很好的解释,搜索确切的 wmp.dll 警告就是让我来到这里的原因。关于如何消除警告的任何想法?我绝对鄙视在我的构建中出现任何警告。谢谢。
  • 唉,这怎么会成为我的问题?我只是解释它,我无法解决它。只需运行一次 tlbimp 并签入互操作库。 WMP 不会再改变了。
【解决方案2】:

如何删除警告信息(wmp.dll)?

老问题,但问题仍然存在:

即使可以忽略警告消息,但将其放在错误列表中会很烦人。 消除x86x64 的警告的方法是什么;

我添加了对不同版本的 Windows Media Player 的引用,并且没有针对这两种 CPU 架构的警告或错误。

这在Windows 10 上非常有效;不能确定其他环境。

对代码进行了轻微修改以适应“新”参考。如果您不需要专门带来警告的构建,您可以尝试一下。请参考附件图片,Build 12.0.10011.x为我工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-04
    相关资源
    最近更新 更多