1

我有一个 Visual Studio 解决方案,并且正在尝试构建以在 Docker 的 Linux 安装上运行。作为该过程的一部分,我需要从我的 Swagger 文档的一个 nuget 包中复制 XML 文档。在我的 windows 开发盒上,我可以做到这一点,但在 Linux 上它不起作用。问题似乎是当我在 linux 上查看 nuget 包的 lib 文件夹时,我只看到一个 .dll,而在 Windows 上我同时看到 .dll 和 .xml。下面是我的恢复命令

RUN dotnet restore "src/Management/Management.csproj"

为什么在 Linux 上没有提取 XML 文件?

另一方面,linux似乎使用全小写创建目录。因此,如果我要提取 nuget 包 Test.MyPackage-3.4.3,它将位于 Linux 上的 /root/.nuget/.../test.mypackage/3.4.3。在我的 csproj 文件中,我引用了%(PackageReference.Identity)返回骆驼大写字母的包。是否也有解决方法?

4

1 回答 1

0

不确定这是否仍然是一个相关问题。

在Microsoft 提供的 Docker 映像NUGET_XMLDOC_MODE中设置了一个 Env 变量。skip

如果您ENV NUGET_XMLDOC_MODE=none在 Dockerfile 中将其更改为,它将解决该问题。但是,映像构建时间肯定会增加,因此您可以考虑将其dotnet restore作为单独的步骤来启用缓存。

更多信息可以在这里找到 https://docs.microsoft.com/en-us/nuget/reference/cli-reference/cli-ref-environment-variables

于 2020-03-13T13:04:31.260 回答