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)
\n\n\nAzure DevOps:错误 NU1101:无法找到包 xxx。源中不存在具有此 id 的包:nuget.org
\n
我对 Docker 没有太多经验,我不确定这个问题是来自 docker 容器还是 dotnet Restore 本身。
\n\n但既然你在评论中说:
\n\n\n\n\n基本上除了硬版本号之外的所有内容都会失败。
\n
所以,我想提供一个解决方法来解决此问题,您可以检查它是否适合您:
\n\n由于我们必须使用硬版本号,因此我们可以再添加一条命令来将包更新到最新版本,命令行如下:
\n\nRUN dotnet add package MyLibPackage -s "$feed"\nRun 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| 归档时间: |
|
| 查看次数: |
3936 次 |
| 最近记录: |