如何在Linux Docker容器中从网络共享还原nuget包

如何在Linux Docker容器中从网络共享还原nuget包,linux,docker,.net-core,ravendb,dotnet-restore,Linux,Docker,.net Core,Ravendb,Dotnet Restore,我试图在Docker容器中构建.NET核心解决方案,但无法使dotnet restore命令正常工作。我需要使用本地网络共享、简单的文件系统存储库以及官方的nuget repo 我的nuget配置如下所示: <?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <add key="Nuget Feed" value="https://api.nuget.

我试图在Docker容器中构建.NET核心解决方案,但无法使dotnet restore命令正常工作。我需要使用本地网络共享、简单的文件系统存储库以及官方的nuget repo

我的nuget配置如下所示:

<?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>
我希望RavenDB包能够从官方提要中恢复,但如果我从nuget.config文件中删除自定义包源,则只能解析非官方包。这让我觉得错误信息有点误导。我还认为/uvd-fs1.uvd.local/Install/UVPackages部分实际上应该是//uvd-fs1.uvd.local/Install/UVPackages,但是添加更多的斜杠并没有任何作用。如果我做错了什么或者这看起来像个虫子,你有什么想法吗?我不是Linux专家,所以我可能缺少一些基本概念

我还尝试将存储库路径更改为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]
我真的不知道这样做是否有意义,这只是谷歌提供的非常有限的线索之一。

UNC路径\。。主要是windows概念。虽然网络路径的底层协议是smb,但NuGet客户端不支持它—它在windows上工作的原因是文件系统api透明地处理UNC路径


如果您想从docker容器可靠地还原,我建议设置NuGet提要。asp.net网站有一个NuGet.Server NuGet包,它足以用于小型内部提要。

Btw,我的计算机正在运行Windows 10,如果与Docker For Windows有任何关联。如果您将uvd-fs1.uvd.local改为IP地址,该怎么办?容器可能无法解析名称。这不会改变任何内容。我还确保可以从容器ping网络路径。
/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]