Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Visual Studio 2008: интерграция DLL в EXE Добавлено: 07.04.09 03:03  

Автор вопроса:  EatenUpInside | Web-сайт:  | ICQ:  
Доброй ночи!

Глупый, ламерский вопрос, но тем не менее:
есть многоязыковой проект - экзешник на вб, 2 библиотеки на сишарп.

Как правильно воткнуть ДЛЛки в исполняемый файл, и, самое главное, вызвать потом оттуда что-надо?

Всем заранее огромное спасибо!

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 AWP



ICQ: 345685652 

Вопросов: 96
Ответов: 1212
 Web-сайт: xawp.narod.ru
 Профиль | | #1
Добавлено: 07.04.09 03:21
а как можно вызвать функцию Дэлэльки которая в экзешнике находиться?)

Ответить

Номер ответа: 2
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #2 Добавлено: 07.04.09 03:42
Ну скажем так, теоритически можно вставить сборки, написанные на C#, в ресурсы исполняемого файла. При запуске сборки подгружаешь из ресурсов в домен, и начинаешь работу с ними. Сам не пробовал, но не вижу причин чтоб это не работало.

Второй вариант (для любителей странного). ILDASM'ом декомпилируешь все свои сборки, IL код собираешь в один файл, ILASM'ом собираешь обработно в одну сборку. Опять же, теоритически тоже выполнимо, на практике - нужно пробовать. Если получишь какие-то результаты, пожалуйста, сообщи.

Ответить

Номер ответа: 3
Автор ответа:
 Skywalker



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #3
Добавлено: 07.04.09 10:44
Думаю он совсем не это имел ввиду. Жамкаешь Project -> Add reference. Выбираешь свои дллки. В проекте пишешь неймспейс_дллки.Функция()

Ответить

Номер ответа: 4
Автор ответа:
 EatenUpInside



ICQ:  

Вопросов: 5
Ответов: 9
 Web-сайт:
 Профиль | | #4
Добавлено: 07.04.09 17:57
Отвечу с конца:

Думаю он совсем не это имел ввиду


Именно это! :-)

При запуске сборки подгружаешь из ресурсов в домен, и начинаешь работу с ними

Со странным решил не связываться пока, а за совет огромное спасибо - получилось следующее:
  1.  
  2.     Sub EmbeddedDLLCallingTest()
  3.     ' ресурс должен иметь свойство "Действие при построении" = "Внедренный ресурс"
  4.         Dim loadedAssembly As Assembly = Assembly.GetExecutingAssembly(), _ 'текущая сборка
  5.         ResStream As System.IO.Stream, _ ' поток для чтения ресурса
  6.         ResBytes As Byte(), _ ' массив, загружаемый в сборку
  7.         Obj As Object ' будущая библиотека
  8.         ' Получаем в поток нужный нам ресурс, посмотреть их список можно GetManifestResourceNames
  9.         ResStream = loadedAssembly.GetManifestResourceStream("Prj.RecursiveDirectoryCopy.dll")
  10.         ' Изменяем размер массива чтобы вместить поток
  11.         ReDim ResBytes(ResStream.Length)
  12.         ' Считываем поток в массив
  13.         ResStream.Read(ResBytes, 0, ResStream.Length)
  14.         ResStream.Close()
  15.         ResStream.Dispose()
  16.         ' Загружаем в сборку наш ресурс, точнее - ДЛЛ
  17.         loadedAssembly = loadedAssembly.Load(ResBytes)
  18.         ' Создаем новую копию нужного нам класса
  19.         Obj = loadedAssembly.CreateInstance("RecursiveDirectoryCopy.RDC")
  20.         ' Обращение к методу
  21.         Obj.copyDirectory("C:\a", "C:\b")
  22.     End Sub


Еще раз всех благодарю!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам