如何在Linux Docker容器中从networking共享中恢复nuget包

我打算在Docker容器中构build.NET Core解决scheme,但无法使dotnet restore命令正常工作。 我需要使用本地networking共享(只是一个简单的文件系统存储库)以及官方nuget回购。

我的nugetconfiguration如下所示:

 <?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <add key="Nuget Feed" value="https://api.nuget.org/v3/index.json" /> <add key="custom feed" value="//uvd-fs1.uvd.local/Install/UVPackages" /> </packageSources> </configuration> 

我启动容器使用命令docker run -it --rm -v "$pwd\:/sln" microsoft/aspnetcore-build:latest

然后cd slndotnet restore ./UVAudit.sln

这会产生以下错误:

 /usr/share/dotnet/sdk/1.0.1/NuGet.targets(97,5): error : Failed to retrieve information about 'RavenDB.Client' from remote source '/uvd-fs1.uvd.local/Install/UVPackages'. [/sln/UVAudit.sln] 

我希望RavenDB软件包可以从官方的feed中恢复,但是如果我从nuget.config文件中删除了自定义的软件包源,那么只有非官方的软件包不能被parsing。 这使我认为错误信息有点误导。 我也会认为/uvd-fs1.uvd.local/Install/UVPackages部分实际上应该是//uvd-fs1.uvd.local/Install/UVPackages ,但是添加更多的斜线并不起作用。 任何想法,如果我做错了什么,或者这看起来像一个错误? 我不是Linux专家,所以我可能会错过一些基本的概念。

我也尝试更改存储库path到smb://uvd-fs1.uvd.local/Install/UVPackages导致错误消息更改为:

 /usr/share/dotnet/sdk/1.0.1/NuGet.targets(97,5): error : Failed to verify the root directory of local source 'smb://uvd-fs1.uvd.local/Install/UVPackages'. [/sln/UVAudit.sln] /usr/share/dotnet/sdk/1.0.1/NuGet.targets(97,5): error : smb://uvd-fs1.uvd.local/Install/UVPackages [/sln/UVAudit.sln] 

我真的不知道这样做是否合理,只是Google提供的非常有限的线索之一。

UNCpath( \\.. )主要是一个Windows概念。 虽然networking和path的底层协议是smb,但NuGet客户端将不支持它 – 它在Windows上工作的原因是因为文件系统api透明地处理UNCpath。

如果你想从docker容器可靠地恢复,我build议设置一个NuGet饲料(有一个NuGet.Server nuget包为asp.net网站是足够的小内部饲料)。