core icon indicating copy to clipboard operation
core copied to clipboard

Consider adding a root directly to dotnet archives

Open richlander opened this issue 6 months ago • 4 comments

We recently heard feedback that dotnet archive packages (.zip, .tar.gz) should include a root directory. A quick survey of archives from other platforms suggests that our pattern is unique.

Here's an example:

rich@lussier:~$ curl -O https://static.rust-lang.org/dist/rust-1.86.0-x86_64-unknown-linux-gnu.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  334M  100  334M    0     0  94.0M      0  0:00:03  0:00:03 --:--:-- 94.0M
rich@lussier:~$ tar -xf rust-1.86.0-x86_64-unknown-linux-gnu.tar.gz
rich@lussier:~$ ls rust-1.86.0-x86_64-unknown-linux-gnu
COPYRIGHT       clippy-preview               llvm-tools-preview                      rust-installer-version
LICENSE-APACHE  components                   rls-preview                             rust-std-x86_64-unknown-linux-gnu
LICENSE-MIT     git-commit-hash              rust-analysis-x86_64-unknown-linux-gnu  rustc
README.md       git-commit-info              rust-analyzer-preview                   rustfmt-preview
builder-config  install.sh                   rust-docs                               version
cargo           llvm-bitcode-linker-preview  rust-docs-json-preview

The instructions from our website require a significantly more complicated model.

Image

We should consider this change for .NET 11.

richlander avatar Jun 02 '25 17:06 richlander

I believe the reason it was done this way originally was because of side-by-side versioning where you have “dotnet.exe” at the root, and then each sdk/runtime version installs into a versioned sub folder.

The idea being that you can extract new versions to the same location and the only thing that gets overwritten is the dotnet executable.

If we add a top-level folder to the archive, extracting new versions to an existing “hive” becomes harder.

eerhardt avatar Jun 03 '25 01:06 eerhardt

That's good context. That's another scenario that I've used.

richlander avatar Jun 03 '25 01:06 richlander

Too late for .NET 10?

sanamhub avatar Jun 03 '25 05:06 sanamhub

I think so. This is a breaking change and will break a lot of existing code. Has to be planned for if we're going to do it.

.NET 10 is close to done. I believe that main switches to .NET 11 next month.

richlander avatar Jun 03 '25 13:06 richlander