如何将自定义 dll 从私有存储库添加到 azure dev ops 管道?

ave*_*mia 2 nuget-package-restore azure-devops

我是 Azure Dev Ops 的新手,我正在尝试为我的项目创建管道。该项目最初是在 subversion 中,并且依赖于我公司维护的一些自定义可下载库。我正在尝试将这些自定义 dll 添加到构建过程中,以便 nuget 恢复命令能够成功。这些 dll 位于源存储库的“packages”存储库中。如何将这些 dll 添加到构建管道中?任何帮助,将不胜感激!

Lan*_*SFT 5

如何将自定义 dll 从私有存储库添加到 azure dev ops 管道?

您的要求有几个方向。根据你的描述,这些是dll而不是nuget包。这是我喜欢的两种方式:

1.如果您熟悉nuget,您可以为这些dll创建nuget包。然后将 nuget 包发布到 Azure Devops nuget feed。之后,您可以使用 Nuget Restore Task 轻松恢复这些包:

在此输入图像描述

前提条件:你的项目应该使用nuget包的方式来管理dll,这意味着你需要编辑项目的项目文件。您的项目应该引用 csproj 中的 nuget 包,而不是使用hintpath直接引用 dll ...

优点: Nuget 是在 .net core 中工作时管理 dll 的常用工具。Azure DevOps Feed 支持私有 Feed,因此在您授予访问权限之前,没有人可以访问您的 Feed。

缺点:你必须做一些关于打包/发布dll和编辑项目文件的工作(xx.xxproj)。

2.如果你的团队坚持使用单个dll而不是将它们打包到nuget包中,那么你不需要担心nuget restore step. 您需要确保构建步骤可以找到丢失的程序集。

例如,在本地计算机中,我的项目依赖于 Windows 桌面中的一个程序集。那么它的 xx.csproj 有:

    <Reference Include="ClassLibrary1">
      <HintPath>..\..\..\..\Desktop\ClassLibrary1.dll</HintPath>
    </Reference>
Run Code Online (Sandbox Code Playgroud)

很明显,如果我将其部署到Azure Devops,它会失败,因为管道找不到相同的路径。Dlls对于这个问题,我的想法是在项目目录中创建一个空文件夹,将该文件夹添加到源代码管理中。另外,将HintPath项目文件编辑为<HintPath>Dlls\ClassLibrary1.dll</HintPath>

现在,在 devops 管道中,我可以添加一个 git 任务或 cmd 任务来运行 git 命令来从私有存储库下载程序集。然后使用命令行任务将程序集复制到System.DefaultWorkingDirectoryDlls下的文件夹。最后,构建过程也能成功。

我只是为您的场景展示了两个方向,实际上还存在其他方向。其中,我强烈推荐nuget packages+Azure Devops Feed这种方式,因为配置好之后更方便。希望以上内容有所帮助。