| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > [DllImport("")] точка входа .NET |
| Автор: dimonpage1 15.10.2007, 10:52 | ||||
| Добрый день. Опишу проект... 1. Создал проект с формой MDI контейнера и хочу в этом проекте открывать окна которые будут храниться в DLL 2. Создал DLL с формой, функциями и процедурами. 3. Подключил в проект DLL черер ADD REFERENCE все чудово! Но так как я использую ClickOnce, при каждом изменении одной из своих DLL мне приходится создавать новый Publish основного проекта. хотелось бы скинуть все dll в папочку и новые версии DLL подкидывать в нее не создавая паблишей. т.е. что бы программа при запуске динамически подгружала все DLL создал тестовый проект и пробую на нем обращение к DLL
в Dll такое:
при нажатии на кнопку выдает эту ошибку Unable to find an entry point named 'ShowForm1' in DLL 'd:\Мои документы\Visual Studio 2005\Projects\DLLForm\DLLForm\bin\Debug\DLLForm.dll'. ошибка говорит о отсутсвтии точки вхождения ============================================ ВОПРОС: как создать точку вхождения в DLL я немного порылся в нете и там пишут, что к библиотекам(DLL) написанным под .NET нужно обращаться только через ADD REFERENCE, а мне так неудобно.... подскажите что я делаю не так в DLL или может есть другое решение организации всего проекта? спасибо за внимание... |
| Автор: iad 15.10.2007, 11:13 | ||
нужно в отдельной сборке объявить интерфейс который будет доступен и в приложени и в dll, в dll реализуешь этот интерфейс, а в основном приложении загружаешь dll примерно так:
и using System.Reflection; не забудь зы ачепятку поправил |
| Автор: tol05 15.10.2007, 11:30 |
| dimonpage1, а почему у тебя в dll функция описана, как возвращающая void, а в твоем коде она уже bool возвращать должна? |
| Автор: dimonpage1 15.10.2007, 11:49 | ||
сори, это я пробовал... но суть вопроса в другом ) iad, можно немного коментов про блок внутри foreach? |
| Автор: iad 15.10.2007, 12:05 |
| конечно в другом. Для динамической загрузки управляемых сборок используется класс Assembly, а не DllImport, который предназначен для импорта функций из неуправляемых dll |
| Автор: dimonpage1 15.10.2007, 12:10 | ||
спасибо за наводку, но можно немного прокомментировать ваш вариант, особенно меня интересует класс "IMyTypeExportedFromDll" как эта схема работает? |
| Автор: iad 15.10.2007, 12:25 |
| Это твой класс, точнее интерфейс который должен быть реализован в твоей dll и виден и в dll и в приложении. Обозвать его можешь как хочешь. Но по большому заморачиваться на динамическую загрузку сборок имет смысл если ты озаботился поддержкой плагинов... а так непонятно в чем у тебя проблема при использовании автоматически загружаемых сборок.. Просто создай солюшн в котором будут все проекты: и длл и основной программы.. |
| Автор: tol05 15.10.2007, 13:00 | ||
| Увидел [DllImport("")] и просто не заметил, что библиотека управляемая. Просто: - вызывай Assembly.Load(...) -создавай свой тип, без всяких интерфейсов
|
| Автор: iad 15.10.2007, 18:50 |
| лох - он всегда лох |
| Автор: tol05 15.10.2007, 19:26 |
Это как понимать?! А ну-ка поподробнее! |
| Автор: iad 15.10.2007, 19:57 |
| Когда научишься код нормально читать, а не через полдня Ё "просто не заметил" тогда поймешь.. |
| Автор: tol05 15.10.2007, 20:25 |
| опять от тебя грубость! Да что ж такое!!! Уже и минус один не помогает... Так что еще один ставить - смысла нет. Гм.. нужно бороться со своими комплексами. Иначе, раньше или позже, iad, ваше (почему "ваше" с маленькой буквы, думаю понятно) психическое здоровье будет непоправимо нарушено. А пока буду считать, что вы не совсем четко себя контролируете, и находились (в момент "постерства" |
| Автор: iad 15.10.2007, 20:33 |
| подлецы смелые, когда занют что им не ответят(правила форума понимаешь) |
| Автор: tol05 15.10.2007, 20:38 |
| ну так в чем проблема, любезный? Повторите свой последний пост еще 36 раз и вперед, "на кнопочки"... |
| Автор: dimonpage1 16.10.2007, 12:53 | ||
вот что я нарыл...
всем спасибо за подсказки |