1

我正在尝试在 Docker 容器中构建 .NET Core 解决方案,但无法使dotnet restore命令正常工作。我需要同时使用本地网络共享(只是一个简单的文件系统存储库)以及官方 nuget 存储库。

我的 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>

我使用命令启动容器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 包可以从官方提要中恢复,但是如果我从 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]

我真的不知道这是否有意义,这只是谷歌搜索提供的非常有限的线索之一。

4

1 回答 1

1

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

如果你想从 docker 容器中可靠地恢复,我建议设置一个 NuGet 提要(有一个用于 asp.net 网站的 NuGet.Server nuget 包,足以满足小型内部提要)。

于 2017-04-07T13:56:38.297 回答