【问题标题】:Missing Assembly Reference while using NATUPNPLib in .NET 3.5在 .NET 3.5 中使用 NATUPNPLib 时缺少程序集参考
【发布时间】:2012-03-21 08:01:35
【问题描述】:

我在使用NATUPnPLib 时遇到问题。当项目在 .Net 4 上运行时,我有一段代码运行良好。但是,不幸的是,当我在 .Net3.5 中尝试相同的代码时,在构建项目时出现了一些程序集引用错误。

UPnPNATClass upnpnat = new UPnPNATClass();

IStaticPortMappingCollection mappings = upnpnat.StaticPortMappingCollection;

我得到以下构建错误:

The type or namespace name 'UPnPNATClass' could not be found (are you missing a using directive or an assembly reference?

虽然我已经从添加引用中添加了对 NatUPnP 库的引用 --> COM

我已在互联网上搜寻解决方案,但找不到任何帮助。我希望这里有人可以提供帮助。

PS:我关注了这个Article about NAT Router and UPnP

感谢和问候。

【问题讨论】:

    标签: c#


    【解决方案1】:

    在 3.5 中你没有理由对此有问题,它很好地支持了这个 COM 组件。检查清单:

    • 确保您添加了引用,而不仅仅是尝试使用您的 4.0 项目生成的互操作库。无法使用该互操作库,因为它具有较新的元数据格式
    • 确保您没有忘记在源代码文件的顶部添加using NATUPNPLib;
    • 作为替代方法,删除 COM 引用并使用 Project + Add Reference 添加回来,浏览选项卡,选择 c:\windows\system32\hnetcfg.dll

    我的钱在第二个子弹上,容易忘记也容易拼错。

    【讨论】:

    • 非常感谢您的回答。但我已经非常小心地执行了所有这些步骤,但仍然没有运气。
    • 如果您仔细按照这些项目符号操作,我无法想象会出现什么问题。当然,我根本没有复制。不得不把毛巾扔在这个上面。
    • 让我在这里改写一下更准确。使用对象浏览器在 .Net 4 中看到的 NATUPNPLib 元数据与我在 .Net 3.5 中看到的库不同。现在的问题是,我遵循的转发端口的方法不可能使用 .Net 3.5 版本库中可用的一组函数和接口来完成。所以这就是我遇到问题的地方。 P.S:不幸的是,我也无法使用 .net 3.5 版本中提供的功能/接口成功完成任务
    • 精度是这里的核心问题。有些不同?什么?
    • 这是 .Net 4 项目中 NATUPNPLib 的对象浏览器视图的屏幕 [IMG]i.imgur.com/WiYNc.png[/IMG] 而这是对象浏览器视图的屏幕.Net 3.5 项目中的 NATUPNPLib [IMG]i.imgur.com/DyHLv.png[/IMG]
    【解决方案2】:

    我自己遇到了这个问题,我发现当你在vs2010中添加3.5框架设置的引用时,NETCONLib的接口映射与NATUPNPLib接口映射转置,使对象不可用。在 4.0 框架中添加引用会为库公开正确的接口映射,因此在 3.5 中工作时,这似乎是 tlib 导入器中的错误。

    【讨论】:

      猜你喜欢
      • 2018-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-05
      • 2014-02-16
      • 1970-01-01
      • 2011-02-19
      • 2014-01-09
      相关资源
      最近更新 更多