Странная проблема совместимости со сборками .Net 3.5 и 4.0 (NATUPnPLib)

Мне не удается заставить библиотеку типов NATUPnP 1.0 работать с Framework 3.5 в Visual Studio 2010. Если я использую .Net 4.0, она работает нормально, но с .Net 3.5 пространство имен NATUPNPLib выглядит в точности как NETCONLib's.

Например, этот пример приложения для управления переадресацией портов с этого сайта: http://pietschsoft.com/post/2009/02/05/NET-Framework-Communicate-through-NAT-Router-via-UPnP.aspx

..использует .Net 3.5, но я не могу заставить его скомпилировать в Visual Studio 2010, если я не изменю его на .Net 4.0.
Я не пробовал, но держу пари, что в Visual Studio 2008 не будет проблемы.


person Juha    schedule 15.05.2010    source источник


Ответы (1)


Я частично репро. У меня тоже есть две разные библиотеки взаимодействия, но я делаю это как на VS2008, так и на VS2010. Внимательно посмотрите на вкладку «Добавить ссылку + COM», столбец «Путь». Оба они относятся к одной и той же DLL, c: \ windows \ system32 \ hnetcfg.dll ".

Что ж, логично, что одна и та же библиотека взаимодействия создается из одной и той же DLL. Я предполагаю, что кто-то в Microsoft решил, что одно из имен библиотеки типов было неуместным, и изменил процедуру регистрации, чтобы зарегистрировать его под новым именем. И зарегистрируйте его под старым именем, чтобы не нарушать обратную совместимость. Не уверен, что именно, но «CON» - одно из тех загадочных сокращений (?), Которые снова и снова появляются в именах библиотек типов Microsoft. Думаю, UPNP лучше справляется с этой задачей.

Может быть разница, если вы используете 64-битную операционную систему. Выберите имя, которое показывает VS2010. В противном случае нет смысла дважды ссылаться на одну и ту же библиотеку типов на один и тот же COM-сервер. Один выполнит свою работу.

person Hans Passant    schedule 15.05.2010