我有一个套餐我推送到一个私人的nuget订阅。然后其他几个项目引用了这些包。一切都很好,除非我指定了一个通配符,它只在vs中有效,但显然在通过azure devops构建进行恢复时不起作用:
这是可行的:
<PackageReference Include="MyLibPackage" Version="1.0.0.114" />
但我在以下位置得到unable to find package
错误:
<PackageReference Include="MyLibPackage" Version="*" />
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"
发布于 2019-06-19 21:28:34
我建议使用正常的问题解决技术,并删除不必要的并发症,以隔离问题的根本原因。在你的例子中,把docker去掉,使用Azure DevOps内置的功能来恢复和构建。但是,在本例中,它可能会掩盖问题,因为NuGet任务允许您指定一个不会出现在任何nuget.config文件中的源提要(该任务将使用源创建一个临时nuget.config文件)。如果你看不出来,我不喜欢使用Docker来构建。这是一项运行服务的伟大技术,但我见过太多的人因为无法在容器中正确使用构建工具而损失了数小时或数天的工作效率。
无论如何,鉴于错误消息中给出的源列表仅包含nuget.org,这意味着您的存储库中没有列出您的私人提要的nuget.config文件。如果您使用Visual Studio的tools->options->nuget->sources添加了您的私人提要,这只会修改您的用户配置文件nuget.config。这意味着它只能在你的计算机上工作,而不能在其他计算机上工作。您需要创建一个nuget.config并将其提交到您的存储库中,以便CI机器能够使用它。使用dotnet new nugetconfig
将为您提供一个良好的入门模板。
https://stackoverflow.com/questions/56666631
复制相似问题