2012-03-21 60 views
2

我在使用NATUPnPLib時遇到問題。我有一段代碼在.NET 4上運行時運行良好。但是,不幸的是,當我在.Net3.5中嘗試使用同一段代碼時,在構建項目時出現一些程序集引用錯誤。在.NET 3.5中使用NATUPNPLib時缺少裝配參考

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

我已經沖刷互聯網尋找一個解決方案,但我無法找到任何幫助。我希望這裏有人能夠幫忙。

P.S:我跟着這個Article about NAT Router and UPnP

感謝名單&問候。

回答

1

沒有理由在3.5中遇到這個問題,它很好的支持這個COM組件。檢查清單:

  • 請確保您添加了參考,而不僅僅是嘗試使用您的4.0項目生成的互操作庫。不能使用的互操作庫,因爲它有較新的元數據格式
  • 確保你沒有忘記你的源代碼文件
  • 頂部作爲替代添加using NATUPNPLib;,刪除COM引用,並將其添加回到工程+添加引用,瀏覽選項卡,選擇c:\ windows \ system32 \ hnetcfg.dll

我的錢是第二個子彈,容易遺忘,容易誤拼。

+0

非常感謝你這樣的回答。但我已經非常仔細地完成了所有這些步驟,仍然沒有運氣。 – 2012-03-24 08:28:33

+0

如果你仔細地關注這些子彈,我無法想象問題可能出在哪裏。當然,我根本沒有得到任何repro。必須把毛巾扔在這個上面。 – 2012-03-24 08:51:35

+0

讓我在這裏重新說明它更準確。使用對象瀏覽器在.Net 4中查看NATUPNPLib的元數據與我在.Net 3.5中查看該庫的元數據不同。現在的問題是,我遵循轉發端口的方法不可能使用庫.Net 3.5版本中提供的一組函數和接口來完成。所以這就是我遇到的問題。 P.S:不幸的是,我還無法使用.net 3.5版本中提供的功能/接口成功完成任務。 – 2012-03-24 10:32:46

1

我自己也遇到了這個問題,我發現當你在3.5版框架設置中添加vs2010中的引用時,NETCONLib的接口映射會與NATUPNPLib接口映射交錯,從而導致對象不可用。在4.0框架中添加引用會爲庫提供正確的接口映射,因此在3.5中工作時,這在tlib導入器中看起來是錯誤的。