linux上的dotnet restore不包括nuget包中的XML文件

时间:2019-10-25 14:59:16

标签: linux msbuild nuget dotnet-restore

我有一个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)引用了程序包,该程序返回驼峰式大小写。也有解决方法吗?

1 个答案:

答案 0 :(得分:0)

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

Microsoft提供的Docker映像中有一个Env变量NUGET_XMLDOC_MODE,它设置为skip

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

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