Как добавить пользовательскую библиотеку DLL в конвейер azure dev ops из частного хранилища? - PullRequest
0 голосов
/ 17 апреля 2020

Я новичок в Azure Dev Ops и пытаюсь создать конвейер для своего проекта. Проект изначально находится в Subversion и опирается на несколько пользовательских загружаемых библиотек, которые поддерживает моя компания. Я пытаюсь добавить эти пользовательские библиотеки в процесс сборки, чтобы команда восстановления nuget была успешной. Библиотеки находятся в репозитории «packages» в репозитории с исходным кодом. Как я могу добавить эти библиотеки в конвейер сборки? Любая помощь будет оценена!

Ответы [ 2 ]

1 голос
/ 17 апреля 2020

Как добавить пользовательскую dll в azure dev ops pipe из частного хранилища?

Есть несколько направлений для вашего требования. Согласно вашему описанию, это dll вместо пакетов nuget. Вот два способа, которые мне нравятся:

1.Если вы знакомы с nuget, вы можете создавать пакеты nuget для этих библиотек. Затем publi sh пакет nuget в Azure ленту новостей Devops . После этого вы можете легко использовать задачу восстановления Nuget для восстановления этих пакетов:

enter image description here

Предварительное условие: Ваш проект должен использовать способ пакета nuget Для управления DLL это означает, что вам нужно отредактировать файл проекта проекта. Ваш проект должен ссылаться на пакеты nuget в csproj, а не ссылаться на dll напрямую, используя hintpath ...

Преимущество: Nuget - это распространенный инструмент для управления dll, когда вы работаете. net ядро. И azure devops Feed поддерживает приватный канал, поэтому никто не сможет получить доступ к вашему каналу, пока вы не предоставите доступ к ним.

Недостаток: Вы должны выполнить некоторые задания по упаковке / публикации dll и редактирование файла проекта (xx.xxproj).

2. Если ваша команда настаивает на использовании отдельных dll вместо упаковки их в пакеты nuget, то вам не нужно беспокоиться о nuget restore step. Все, что вам нужно, это убедиться, что на этапе сборки можно найти недостающие сборки.

Например, на локальном компьютере мой проект опирается на одну сборку на windows рабочем столе. Тогда его xx.csproj имеет:

    <Reference Include="ClassLibrary1">
      <HintPath>..\..\..\..\Desktop\ClassLibrary1.dll</HintPath>
    </Reference>

Очевидно, что произойдет сбой, если я разверну его на Azure Devops, потому что конвейер не найдет тот же путь. Для этой проблемы моя идея - создать пустую папку Dlls в каталоге проекта, добавить папку в систему контроля версий. Кроме того, измените HintPath в файле проекта на <HintPath>Dlls\ClassLibrary1.dll</HintPath>

Теперь в конвейере devops я могу добавить задачу git или команду cmd, которая запускает команды git для загрузки ваших сборок из частных репозиториев. , Затем задача командной строки для копирования сборок в папку Dlls в папке System.DefaultWorkingDirectory . Наконец, процесс сборки также может быть успешным.

Я просто показываю два направления для вашего сценария, на самом деле существуют другие направления. Среди них я настоятельно рекомендую способ nuget packages+Azure Devops Feed, так как он удобнее после их настройки. Надеюсь, что все выше помогает.

1 голос
/ 17 апреля 2020

Если вы говорите, что ваш репозиторий содержит некоторые библиотеки DLL, необходимые для сборки приложения, у вас есть проблема не с восстановлением nuget. Восстановление Nuget просто загрузите связанные пакеты Nuget. И в вашем случае вам нужно получить DLL для создания приложения. Вы можете использовать подход с несколькими репо и получить свой Subversion репо вместе с новым. Или вы можете использовать скрипт step и там напрямую вызывать командную строку svn, чтобы получить только указанные c папки (и файлы, необходимые для вашей сборки). Поскольку и windows, и хост-агенты ubuntu уже установили svn, вы на полпути домой. Пожалуйста, имейте в виду, что вам нужно переместить ваши dll в нужную папку, чтобы MSBuild мог найти их при сборке.

Другой подход - создать пакеты nuget для этих dll и затем сохранить их в Azure Feed. Затем измените ссылки в ваших проектах, чтобы они зависели от пакета nuget, а не от dll-файлов напрямую.

...