Azure devops 如何在Docker构建步骤的工件页面中使用Nuget包?

Azure devops 如何在Docker构建步骤的工件页面中使用Nuget包?,azure-devops,azure-pipelines,azure-pipelines-build-task,Azure Devops,Azure Pipelines,Azure Pipelines Build Task,在我的Azure Devops项目中,在“工件”选项卡下,我有一个包MyPackage 在我的构建管道中,我有以下步骤: - stage: Build displayName: "Build" jobs: - job: steps: - task: Docker@2 inputs: containerRegistry: 'TEST container registry'

在我的Azure Devops项目中,在“工件”选项卡下,我有一个包
MyPackage

在我的构建管道中,我有以下步骤:

  - stage: Build
    displayName: "Build"
    jobs:
    - job: 
      steps:
      - task: Docker@2
        inputs:
          containerRegistry: 'TEST container registry'
          repository: 'mycontainerregistry/backend'
          command: 'buildAndPush'
          buildContext: '$(System.DefaultWorkingDirectory)'
          Dockerfile: '**/Dockerfile'
          tags: |
            $(Build.BuildId)
            latest
正在生成的Dockerfile是Visual Studio生成的标准文件:

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["MyProject.API.csproj", "MyProject.API/"]
RUN dotnet restore "MyProject.API/MyProject.API.csproj"
COPY . .
WORKDIR "/src/MyProject.API"
RUN dotnet build "MyProject.API.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "MyProject.API.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyProject.API.dll"]

现在,问题在于
dotnetrestore
命令。此步骤失败,因为restore命令无法从docker生成上下文中找到MyPackage nuget。当运行
docker build
时,如何进行
dotnet还原
查找
MyPackage

如果您有私人订阅源,则需要使用
dotnet nuget添加源添加源

dotnet  nuget sources add -name "SomeName" -source https://pkgs.dev.azure.com/YourFeed/nuget/v3/index.json -username anything -password $TOKEN
要通过System.AccessToken,您需要使用
ARG

FROM alpine

ARG TOKEN
RUN dotnet  nuget sources add -name "SomeName" -source https://pkgs.dev.azure.com/YourFeed/nuget/v3/index.json -username anything -password $TOKEN
然后在伊马尔

-任务:Docker@2
投入:
containerRegistry:“DevPSManual acr”
命令:“构建”
Dockerfile:'stackoverflow/85 docker/Dockerfile'
参数:'--build arg TOKEN=$(System.AccessToken)'
请拆分buildAndPush,因为它不允许将参数传递到两个单独的任务中。有关更多详细信息,请查看此


还请确保您可以
生成服务
在提要设置中具有参与者角色。

谢谢您的帮助。当然,如果使用AccessToken方法,如何生成令牌?
System.AccessToken
是预定义变量,无需生成它-请检查。而
TOKEN
是dockerfile中的一个参数。对于任何阅读此文件的人,“新”语法是:
RUN dotnet nuget add source