2012-03-21 2 views
2

У меня возникли проблемы с использованием NATUPnPLib. У меня есть часть кода, которая отлично работает, когда проект запущен .Net 4. Но, к сожалению, когда я пытаюсь использовать один и тот же фрагмент кода в .Net3.5, я получаю некоторые сборочные ссылочные ошибки при создании проекта.Отсутствует ссылка на сборку при использовании NATUPNPLib в .NET 3.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 из Add Reference -> COM

Я обыскивал Интернет, чтобы найти но я не смог найти никакой помощи. Надеюсь, кто-то здесь сможет помочь.

P.S: Я после этого Article about NAT Router and UPnP

Thanx & С уважением.

ответ

1

Нет причин, по которым вы должны столкнуться с проблемой в 3.5, он хорошо поддерживает этот компонент COM. Контрольный список:

  • Убедитесь, что вы добавили ссылку, а не просто пытались использовать библиотеку interop, созданную вашим проектом 4.0. Это Interop библиотека не может быть использована, так как он имеет новый формат метаданных
  • Убедитесь, что вы не забыли добавить using NATUPNPLib; в верхней части вашего кода файла исходного
  • В качестве альтернативы, удалить ссылки COM и добавить его назад с помощью Project + Добавить ссылку, вкладку «Обзор», выберите c: \ windows \ system32 \ hnetcfg.dll

Мои деньги находятся на второй пуле, легко забываемой и легко ошибочной.

+0

Большое спасибо за такой ответ. Но я сделал все эти шаги очень осторожно и до сих пор не повезло. –

+0

Я не могу притворяться, что может быть проблемой, если вы внимательно следите за этими пулями. Конечно, я не получаю никакого повторения. Вам нужно бросить полотенце на этом. –

+0

Позвольте мне перефразировать это, если быть более точным здесь. Метаданные, видимые для NATUPNPLib в .Net 4 с использованием обозревателя объектов, отличаются от того, что я вижу для библиотеки в .Net 3.5. Теперь проблема заключается в том, что приложение, которое я выполняю для перенаправления портов, не может быть выполнено с помощью набора функций и интерфейса, доступных в версии .Net версии 3.5 библиотеки. Так вот где проблемы возникают для меня. P.S: К сожалению, я также не смог успешно выполнить задачу, используя функции/интерфейсы, доступные в версии .net 3.5. –

1

Ответ на эту проблему сам, и я обнаружил, что при добавлении ссылки в vs2010 с параметрами 3.5 framework карта интерфейса для NETCONLib переносится с помощью карты интерфейса NATUPNPLib, что делает объекты недоступными. Добавление ссылки в рамки 4.0 предоставляет правильную карту интерфейса для библиотек, так что это будет ошибкой в ​​импортере tlib при работе в 3.5.

Смежные вопросы