Problems writing 3mf files - ZipArchive compression

Hi there,
I have a very weird problem I just can’t wrap my head around and not even sure where to ask this.
Basically I’m writing a converter for models to the .3mf file format.
.3mf files are renamed .zip files that have a fixed folder structure and use .xml for their internal data.

I use the official 3mf examples unpacked for testing my code and here is the problem:
When I have all the files and folder-structure ready and try to pack them into an archive I run into errors:

If I use the windows UI to select the files and rightclick → ‘send to zip archive’ everything works correctly.
If I use c# ZipFile or sharpziplib to zip the files - the .3mf throws an error.
If I use tar.exe to zip the files the Windows 3D-viewer throws an error but other CAD programs can open the file.

Hp has a filechecker to look for errors in 3mf files https://dev.3mf.hp3d.io/ and it throws:

FATAL_ERROR [Missing required file _rels/.rels]

the file is in the archive and is in the right place but for some reason wont be found by the interpreter.

Is there someone that can point me in the right direction?
Maybe zip files have different ways to store path information that is not visible to me as the user?

exporttest.zip (1.3 KB)

as a followup here I have two examples whch to me look pretty much identical.
One made by using the windows UI, the other one with tar.
One throws the ‘missing file’-error in the hp validator, the other one doesn’t.
invalid.zip (1.0 KB)
valid.zip (1.0 KB)

I actually think I found the solution.
3mf expects “/” as the path separator in the file while every Zip-Library known to mankind uses “\” by default.

So when I use ZipArchive to create every file myself everything works out

ZipArchive zip = System.IO.Compression.ZipFile.Open(zipPath, ZipArchiveMode.Create);
zip.CreateEntryFromFile(tempPath+@"/[Content_Types].xml", @"[Content_Types].xml");
zip.CreateEntryFromFile(tempPath+@"/_rels/.rels", @"_rels/.rels");
zip.CreateEntryFromFile(tempPath+@"/3D/3dmodel.model", @"3D/3dmodel.model");
zip.Dispose();

Glad you solved it!

As for the path seperator convention:

/ is the path separator on Unix and Unix-like systems. Modern Windows can generally use both \ and / interchangeably for filepaths, but Microsoft has advocated for the use of \ as the path separator for decades.