Как встроить .tlb в качестве файла ресурсов в .NET Assembly DLL? - PullRequest
13 голосов
/ 06 января 2009

Мы используем нашу сборку .NET DLL внутри нативного C ++ через COM (CCW). Всякий раз, когда я делаю новую версию своей DLL, я должен отправить два файла (.dll и соответствующий .tlb) команде, которая использует ее в своем коде.

Можно ли встраивать файл .tlb в качестве ресурса в файл .NET DLL?

1 Ответ

11 голосов
/ 07 января 2009

Это не совсем просто сделать с Visual Studio .NET, но это можно сделать. На базовом уровне вам нужно сделать следующее:

  1. Создайте файл TLB, например, "YourLibrary.tlb".

  2. Создайте файл сценария ресурса Win32 с именем, например, «YourLibrary.rc», используя текстовый редактор (например, «Блокнот» или «Файл / Новый / Файл ... / Текстовый файл в Visual Studio»).

  3. В файле сценария введите следующий текст (дословно (но, конечно, замените ваше фактическое имя файла TLB):

    1 typelib "YourLibrary.tlb"

  4. Сохраните файл сценария в той же папке, что и файл TLB.

  5. Из командной строки Visual Studio перейдите в папку с файлом сценария и скомпилируйте его с помощью следующей команды:

    rc YourLibrary.rc

    При этом будет создан файл ресурсов Win32 в той же папке, которая называется «YourLibrary.res».

  6. В Visual Studio щелкните правой кнопкой мыши узел проекта (например, «YourLibrary») в обозревателе решений и выберите Свойства.

  7. На вкладке «Приложение» в разделе «Ресурсы» выберите параметр «Файл ресурсов» и перейдите к файлу «YourLibrary.res», начиная с шага 5.

  8. Сохраните и перестройте проект.

TLB теперь будет встроен в качестве ресурса в DLL, так что другие приложения COM могут читать его.

Если вы позже сгенерируете файл TLB, вам потребуется повторить шаг 5, чтобы перекомпилировать файл ресурсов, и шаг 8, чтобы встроить новую версию в DLL.

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

...