Попытка получить TFS TeamBuild для построения C #> VB6> приложения C # (Comreference Probs?)
-
13-12-2019 - |
Вопрос
Я пытаюсь получить TFS Team-Build, чтобы надежно создать приложение WPF C #. Это приложение полагается на VB6LIB.dll, которое мы поддерживаем, сам этот VB6Lib.dll полагается на других библиотек C #, которые мы также поддерживаем.
Я настроил определение сборки для создания (в порядке):
- .
- vbdependonds.sln (все libs в этом есть COM-интернат, поэтому VB6 может найти свои TLBS)
- buildvb6lib.proj (файл msbuild, который вызывает "vb6.exe / make / d", чтобы сделать VLIB.DLL на сервере сборки, как часть этого сценария, который я копирую вывод VB6LIB.DLL в C: \ tmp)
- mainapp.sln (в моем рабочем пространстве я добавил ссылку на c: \ tmp \ vb6lib.dll)
Это звучит хорошо ? На моем ноутбуке Dev я обычно создаю VB6, скопируйте свой вывод на \ TMP, а затем regsvr32 его там перед добавлением ссылки на него в моем решении C #. Это этот шаг, который я не убежден, что моя сборка Def делает.
Кроме того, есть ли способ получить более полезный вывод из сборки VB6, в настоящее время я получаю «Ошибка компиляции в файле xxx.bas» может «найти проект библиотеки», но не какую фактическую библиотеку не могу найти ,
Приветствия
Решение
Вы правы в том, что критическая точка вашего процесса сборки в системе разработки заключается в регистрации объекта COM.Тем не менее, в целом не хочет зарегистрировать объект COM на сервере сборки, так как это может привести к тому, что всевозможные проблемы версий и бесшумные сбои, когда неправильный объект COM зарегистрирован, или регистрация не удается.
Правильный способ выполнить это - генерировать вручную сборку взаимодействия вручную и ссылку вместо COM-объекта.Это достигается с утилитой TLBIMP, например:
tlbimp ..\Libraries\VBLib.dll /out:..\Libraries\Interop.VBLib.dll
.
Запустите эту команду в вашей системе разработки, затем удалите ссылку на VB6LIB.dll и добавьте ссылку на interop.vblib.dll.Затем вы можете добавить команду TLBIMP в качестве мероприятия Prebuild в проекте ссылки на ссылке, чтобы в Сборке Interop всегда строить из правильной версии, и вы больше никогда не должны иметь свой COM-объект, зарегистрированный в системе сборки.