Azure DevOps:错误 NU1101:无法找到包 xxx。源中不存在具有此 ID 的包:nuget.org

Elg*_*des 5 nuget docker .net-core azure-devops

我有一个包我推送到私人 nuget 提要。然后其他一些项目引用了这些包。一切都很好,除非我指定了一个通配符,它​​只在 vs 中有效,但显然在通过 azure devops 构建恢复时无效:

这有效:

<PackageReference Include="MyLibPackage" Version="1.0.0.114" />
Run Code Online (Sandbox Code Playgroud)

但我收到以下unable to find package错误:

<PackageReference Include="MyLibPackage" Version="*" />
Run Code Online (Sandbox Code Playgroud)

运行 azure devops 中的还原任务的 dockerfile 片段:

# Install the Credential Provider to configure the access
RUN wget -qO- https://raw.githubusercontent.com/Microsoft/artifacts-credprovider/master/helpers/installcredprovider.sh | bash

# Configure the environment variables
ENV NUGET_CREDENTIALPROVIDER_SESSIONTOKENCACHE_ENABLED true
ENV VSS_NUGET_EXTERNAL_FEED_ENDPOINTS "{\"endpointCredentials\": [{\"endpoint\":\"$feed\", \"password\":\"$pat\"}]}"

WORKDIR /src

COPY ["MyProject/MyProject.csproj", "MyProject/"]

RUN dotnet restore -s "$feed" "MyProject/MyProject.csproj"
Run Code Online (Sandbox Code Playgroud)

Leo*_*SFT 2

\n

Azure DevOps:错误 NU1101:无法找到包 xxx。源中不存在具有此 id 的包:nuget.org

\n
\n\n

我对 Docker 没有太多经验,我不确定这个问题是来自 docker 容器还是 dotnet Restore 本身。

\n\n

但既然你在评论中说:

\n\n
\n

基本上除了硬版本号之外的所有内容都会失败。

\n
\n\n

所以,我想提供一个解决方法来解决此问题,您可以检查它是否适合您:

\n\n

由于我们必须使用硬版本号,因此我们可以再添加一条命令来将包更新到最新版本,命令行如下:

\n\n
RUN dotnet add package MyLibPackage -s "$feed"\n
Run Code Online (Sandbox Code Playgroud)\n\n

并在项目文件所在的dockerfile中设置WORKDIR。

\n\n

@Elger Mensonides,感谢 Elger 对正确命令行的贡献。

\n\n

如果我们不在命令行中指定版本,它会将最新的包添加到项目中。

\n\n

有关详细信息,请查看文档dotnet CLI \xe2\x80\x93 如何更新 NuGet 包并添加新的 NuGet 包。

\n\n

希望这能有所帮助。

\n