dev.net.ua

Українська Спільнота Розробникiв
 
Ласкаво просимо до dev.net.ua Увійти | Приєднатися | Допомога | Увійти Live ID
в Пошук

Add-in

Останнє повідомлення 21-01-2008, 9:46 від hennadiy. 10 відповіді.
Сортувати: Попереднє Наступне
  •  26-07-2007, 23:54 3705

       Доброе утро! Будьте добры, подскажите, пожалуйста, как можно сделать приложение, которое будет использовать мехнизм Add-in (как скажем в Adobe(c) Photoshop(r) ?

     

    Что для этого необходимо?

     

     

  •  27-07-2007, 1:44 3707 у відповідь на 3705

    Add-ins это приложения, которые пишутся под конкретную программу. Обычно, это DLL c определенной регистрацией в реестре. Для того, чтобы написать add-in к Adobe(c) Photoshop, надо смотреть на его документацию. Там должна быть вся информация об этом.

    Кстати, как правило, не все версии host приложения поддерживают add-ins.


    Thank you,
    Misha Zhutov
    http://submain.com - .NET Developer Tools
    Microsoft MVP
  •  27-07-2007, 2:41 3709 у відповідь на 3707

    Наверное Вы не правильно поняли, что я хочу. Вот я написал программу (допустим любое Windows_приложение) и я хочу к нему сделать add-in в виде Dll как я могу этого добиться?
  •  27-07-2007, 3:29 3710 у відповідь на 3709

    Теперь понятно. Это довольно обширная тема. В самом простом случае, вам нужно иметь возможность динамически загружать сторонние сборки в AppDomain и вызывать выполнение различных методов в них.

    Самое первое, надо определиться, как ваша программа будет распознавать эти сборки. Самое простое, это какая нибудь предопределенния директория. Динамически загружать add-in сборки надо с помощь Reflection. Когда ваше приложение запускается, оно будет просматривать содержимое предопределенной директории, и загружать все сборки в домен. Для того, чтобы унифицировать процесс вызова методов, надо в вашем приложении определить общий интерфейс для типов, которые будут реализованы в add-in сборке.

    Если ваша программа требует какой то дополнительной функиональности, пишите, поможем.


    Thank you,
    Misha Zhutov
    http://submain.com - .NET Developer Tools
    Microsoft MVP
  •  27-07-2007, 3:53 3711 у відповідь на 3710

    Михаил, спасибо большое за помощь! Smile
  •  28-07-2007, 22:41 3718 у відповідь на 3709

    На эту тему есть много готовых статей. Думаю стоит их почитать т.к. есть ньюансы загрухки и выгрузки модулей.
    На uneta.org была статья преведенная Шатохиной Надеждой. На этот ресурс её не перенесли к сожалению, но найти все же можно:
    Создание подключаемой инфраструктуры
    Можно и оригинал поискать, автор - Roy Osherove.
    Add run-time functionality to your application by providing a plug-in mechanism

    Михаил, Виктор, а можно ли действительно восстановить тут крупицы мудрости с сайта uneta ? Ведь были там полезные вещи.

    Лучше побыть дураком 5 минут, чем остаться им на всю жизнь ...
  •  29-07-2007, 23:01 3721 у відповідь на 3718

    Спасибо! :)
  •  30-07-2007, 21:52 3739 у відповідь на 3710

    Миш, могли бы Вы мне помочь с такой вот ситуацией:

    Допустим у меня есть Windows-приложение, а и я хочу, чтобы при добавлении Add-in допустим в меню появлялась кнопочка, при нажатии на которую в MessageBox выводиться скажем hello world.

     

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

     

    Спасибо!

  •  01-08-2007, 9:31 3761 у відповідь на 3739

    Вот, пользуйтесь - Add-in mechanism sample.
    Thank you,
    Misha Zhutov
    http://submain.com - .NET Developer Tools
    Microsoft MVP
  •  02-08-2007, 0:27 3764 у відповідь на 3761

    SmileSmileСПАСИБО ВАМ БОЛЬШОЕ!!! Smile
  •  21-01-2008, 9:46 5201 у відповідь на 3710

    Ок, а если в плагине есть юзер-контролы, которые должны быть прилеплены на форме-хосте?

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

    2. Если наследовать плагин от MarshalByRefObj (чтоб работать по ссылках, не создавая копий) - ловим экзепшн.

    Есть еще 3-ий вариант - передавать тип в хост, пусть он сам его активирует, но тогда исчезает весь смысл использования AppDomain...

    Вариант с System.Addin не подходит, т.к. проект должен работать на .NET 2.0

    Есть ли какой-то способ выкрутится из этой ситуации?

Переглядати як новосний Блог RSS в XML