Отключение модуля в программе, не доставляя .dll - PullRequest
1 голос
/ 18 февраля 2009

Если вы распространяете веб-приложение .net и хотите, чтобы определенный модуль приложения был отключен, И вы не хотите отправлять исходный код вместе с ним, разумным решением будет просто не включать необходимое. DLL для этого модуля?

Я знаю, что вы можете делать все программно, но до тех пор, пока вы не отправите .dll, все должно быть в порядке, верно?

Причина, по которой некоторые библиотеки .dll требуют от вас продажи продукта на коммерческой основе, и, если я хочу отдать его бесплатно или в качестве демонстрационной версии, я застрял.

Ответы [ 5 ]

1 голос
/ 05 марта 2009

Один из возможных подходов (при условии, что вы не хотите или не можете идти по плагину) - создать фиктивную DLL со всеми теми же классами и методами, но на самом деле это ничего не делает. *

В зависимости от размера и сложности вашей DLL это может или не может быть жизнеспособным действием.

Путь к плагину будет таким, каким я к нему подхожу, так как всякий раз, когда меняется "настоящая" DLL, вам нужно будет обновить фиктивную.

1 голос
/ 18 февраля 2009

С вами должно быть все в порядке, если бинарное изображение, которое вы отправляете, на самом деле не требует ничего в dll, который вы не отправляете. Это включает в себя «не предоставляет функциональность, предоставляемую отсутствующими DLL».

Например; не открывайте кнопку «скачать как pdf», если ваши pdf инструменты не «установлены».

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

1 голос
/ 18 февраля 2009

Вы должны пойти на плагин архитектуры. Здесь много вопросов по SO , а также MEF , которые будут использоваться в Visual Studio 2010, плюс множество контейнеров DI / IoC, которые могут помочь в создании приложений на основе плагинов.

0 голосов
/ 19 февраля 2009

Это определенно сломается, если вы используете веб-сайт вместо проекта веб-приложения, потому что ссылка на DLL должна быть в вашем файле web.config ..., что приведет к ошибке, если она отсутствует.

Вы можете избежать неприятностей с этим в проекте веб-приложения, но это довольно уродливый метод. Намного лучше использовать какую-то архитектуру плагинов, как предлагают другие.

0 голосов
/ 18 февраля 2009

Вам определенно нужен какой-то элемент «в коде», потому что отсутствие DLL сломает вещи хуже, чем просто отключение модулей, которые вы намеревались.

...