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

标签 azure-devops nuget-package-restore

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

最佳答案

How do I add a custom dll to an azure dev ops pipeline from a private repository?

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

1.如果你熟悉nuget,可以create nuget packages对于那些dll。然后publish the nuget package to the Azure Devops nuget feed 。之后,您可以轻松使用 Nuget Restore Task 来恢复这些包:

enter image description here

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

优点:Nuget 是在 .net core 中工作时管理 dll 的常用工具。 Azure Devops Feed 支持私有(private) Feed,因此在您授予访问权限之前,没有人可以访问您的 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 命令来从私有(private)存储库下载程序集。然后使用命令行任务将程序集复制到 Dlls System.DefaultWorkingDirectory下的文件夹。最后,构建过程也能成功。

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

关于azure-devops - 如何将自定义 dll 从私有(private)存储库添加到 azure dev ops 管道?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61261201/

相关文章:

azure - 如何在 npm 任务中使用 secret 任务变量

azure - 在azure devops的目标分支中批准PR后,我可以自动创建标签吗?

azure - 部署 Web 应用程序时,Microsoft Azure 中可能存在错误吗?

c# - 创建一个从在线提要中提取 NuGet 引用的 Visual Studio 项目模板

visual-studio - "Enable NuGet Package Restore"在 VS 2015 中消失了

mono - 在 Linux 环境下使用 xbuild 构建 .NET 项目

Azure Web 服务 IP 地址

azure - Databricks Repo 与 Azure DevOps - 尝试添加存储库时出现 400 错误请求

visual-studio - Visual Studio 本地工作区 + 启用 Nuget 包还原 (disableSourceControlIntegration)