linux上的dotnet还原不包括nuget包中的XML文件
我有一个VisualStudio解决方案,正在尝试构建在Linux安装的Docker上运行的解决方案。作为过程的一部分,我需要从我的招摇过市文档的一个nuget包中复制XML文档。在我的windows开发盒上,我可以做到这一点,但在Linux上它不起作用。问题似乎是,当我在linux上查看nuget包的lib文件夹时,我只看到了一个.dll,而在Windows上,我同时看到了.dll和.xml。下面是我的恢复命令linux上的dotnet还原不包括nuget包中的XML文件,linux,msbuild,nuget,dotnet-restore,Linux,Msbuild,Nuget,Dotnet Restore,我有一个VisualStudio解决方案,正在尝试构建在Linux安装的Docker上运行的解决方案。作为过程的一部分,我需要从我的招摇过市文档的一个nuget包中复制XML文档。在我的windows开发盒上,我可以做到这一点,但在Linux上它不起作用。问题似乎是,当我在linux上查看nuget包的lib文件夹时,我只看到了一个.dll,而在Windows上,我同时看到了.dll和.xml。下面是我的恢复命令 RUN dotnet restore "src/Management/Manage
RUN dotnet restore "src/Management/Management.csproj"
为什么没有在linux上提取XML文件
另一方面,linux似乎使用所有小写字母创建目录。因此,如果我提取nuget-package-Test.MyPackage-3.4.3,它将位于linux上的/root/.nuget/../Test.MyPackage/3.4.3。在我的csproj文件中,我使用
%(PackageReference.Identity)
引用包,它返回大小写。这方面也有解决办法吗?不确定这是否仍然是一个相关问题
在Microsoft提供的Docker映像中,有一个Env变量NUGET\u XMLDOC\u MODE
,该变量设置为skip
如果在Dockerfile中将其更改为ENV NUGET\u XMLDOC\u MODE=none
,则会解决此问题。但是,图像生成时间肯定会增加,因此您可以考虑将<代码> dotnet还原< /C>作为单独的步骤来启用缓存。
更多信息可以在这里找到
不确定这是否仍然是一个相关问题 在Microsoft提供的Docker映像中,有一个Env变量
NUGET\u XMLDOC\u MODE
,该变量设置为skip
如果在Dockerfile中将其更改为ENV NUGET\u XMLDOC\u MODE=none
,则会解决此问题。但是,图像生成时间肯定会增加,因此您可以考虑将<代码> dotnet还原< /C>作为单独的步骤来启用缓存。
更多信息可以在这里找到
NuGet应该从所有操作系统上的nupkg中提取所有文件,因此我最好的猜测是,在不同的NuGet源上有两个版本相同的包,一个有xml,一个没有xml。这个包是公共的吗,所以你可以给我们指出它,我们可以自己看看?我正在使用一个非公共包,但对Microsoft.AspNetcore.Mvc.Version v3.1.6做了更改,并看到了相同的结果。NuGet应该从所有操作系统上的nupkg中提取所有文件,所以我最好的猜测是,在不同的nuget源上有两个版本相同的包,一个有xml,一个没有。这个包是公共的吗?您可以给我们指出它,我们可以自己看一看吗?我正在使用一个非公共的包,但对Microsoft.AspNetcore.Mvc.Version v3.1.6进行了更改,并看到了相同的结果。