2015-12-18 4 views
0

У меня есть проект, который я разрабатываю, который использует стороннюю библиотеку COM в качестве ссылки, и я хотел бы создать этот проект на клиенте Visual Studio Team Services. Моя первая идея - создать задачу MSBuild, которая проверяет, установлена ​​ли COM-библиотека на локальном компьютере, а если нет, включите ее и установите, но это похоже на действительно грязный способ сделать это. Я искал вокруг, но кажется, что все ответы датируются годами, и я не могу показаться, что некоторые из них я нашел в проекте VS 2013. Как другие люди решили эту проблему? Есть ли более чистый способ?Как создать проект, который опирается на стороннюю библиотеку COM на сервере сборки?

Для справки Я также пробовал this solution, который выглядит действительно чистым, но безрезультатно.

ответ

2

Я бы один из этих маршрутов:

  • Генерация DLL Interop с tlbimp, добавьте его в свой проект и ссылаться на него прямо:
    • В командной строке VS, выполнить tlbimp.exe <your_dll> для создания Interop длл. Вы можете указать имя с опцией /out.
    • поставить эту библиотеку DLL где-то с кодом
    • эталонным его, перейдя в Add reference > Browse и нажмите Browse... добавить DLL
  • Генерирование TLB из библиотеки DLL COM, добавьте его в проект и сослаться на TLB:
    • Генерирование TLB (например, с помощью OLE/COM Object viewer) или extract it from the dll resources,
    • поставить этот TLB где-то с кодом
    • ссылка его, перейдя в Add reference > COM и нажмите Browse... добавить ссылку TLB проекта
    • Как отметил @HansPassant в комментариях, это решение все еще зависит от реестра, но вы можете зарегистрировать его с regtlb, regtlib или подобным инструментом, как prebuild шаг, который должен быть проще, чем установка сервера (хотя, если это всего лишь DLL, вы можете использовать regsvr32, чтобы зарегистрировать его вместо полной установки). Тем не менее, это еще более сложный, чем подход с DLL-взаимодействия
+0

Можете ли вы предоставить некоторые детали реализации или ссылки и сказать, что разница в результатах являются для этих двух методов? – PlTaylor

+0

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