Skip to content

feat(post): .NET tools roll-forward article, dated 11 Aug 2026 - #23

Merged
solrevdev merged 2 commits into
masterfrom
post/dotnet-rollforward-major
Aug 7, 2026
Merged

feat(post): .NET tools roll-forward article, dated 11 Aug 2026#23
solrevdev merged 2 commits into
masterfrom
post/dotnet-rollforward-major

Conversation

@solrevdev

@solrevdev solrevdev commented Aug 6, 2026

Copy link
Copy Markdown
Owner

Adds the article on why a .NET global tool stops working when the runtime it targets is no longer installed, and moves the publishing script into this repo.

The post

A net8.0 tool will not start on a machine carrying only the .NET 10 runtime. Roll-forward does not cross major version boundaries by default. Reproduced in Docker against mcr.microsoft.com/dotnet/sdk:10.0 and fixed with one MSBuild property, <RollForward>Major</RollForward>. Also covers why global.json is the wrong tool for this, and the --allow-roll-forward install flag users can fall back on.

Timely: .NET 8 and .NET 9 both reach end of support on 10 November 2026.

The matching one-line fix to the tool itself is solrevdev/seedfolder#23. Merge that one first, so anyone following the post to the repo finds the property already there.

Publishing

Dated 2026-08-11, so Jekyll excludes it from every build until that date. Merging this does not publish it.

On or after Tuesday 11 August:

script/publish-post 2026-08-11 dotnet-tools-roll-forward-major-version --yes

Tuesday was chosen from traffic research: the Dew Drop publishes weekdays around 10:30 UTC and never at weekends, and Monday editions run about 40% longer so a link competes with more of them.

The script move

script/publish-post used to live in ~/Dropbox/_shared/scripts/ as seedfolder-blog-publish-future-post.sh, and AGENTS.md pointed at a third path that no longer existed.

It only ever drives this blog: it names the repo, builds it, checks master, reads _config.yml. So it now sits alongside script/cibuild using the same bare-verb naming, and REPO_PATH is derived from the script's own location instead of a hardcoded /Users path, so it works in any clone on any machine.

The old "seedfolder" prefix was a misnomer. The script has nothing to do with that project.

script is already in the exclude: list in _config.yml, so none of it is served from the site.

Verified

  • Build without --future excludes the post, so it stays invisible until Tuesday
  • Build with --future renders it correctly
  • Canonical URL, meta description, og:image pointing at the PNG, twitter:card as summary_large_image
  • PNG is exactly 1200x630, SVG is 2.4KB
  • Appears on the home page and archive listings
  • script/ does not reach the built site
  • The script's date guard correctly refuses to run before 11 August, and its repo-root derivation resolves correctly when invoked from another directory

🤖 Generated with Claude Code

A net8.0 global tool will not start on a machine that has only the .NET 10
runtime, because roll-forward does not cross major version boundaries.
Reproduced in Docker against mcr.microsoft.com/dotnet/sdk:10.0 and fixed
with <RollForward>Major</RollForward>.

The post is dated 2026-08-11, so Jekyll excludes it from every build until
that date. Publish it by triggering a Pages build on or after the date.

Also correct the publish script path in AGENTS.md. The script lives in
~/Dropbox/_shared/scripts/, not the weekly to-do folder.
The script only ever drives this blog. It names the repo, runs
`bundle exec jekyll build` against it, checks that the branch is master and
reads `_config.yml`. It has no other consumer, so keeping it in Dropbox meant
AGENTS.md pointed outside the repository and the script could drift from the
thing it operates on.

It now lives at script/publish-post, alongside the existing script/cibuild,
and follows the same bare-verb naming. The old name carried a "seedfolder"
prefix, which was a misnomer: the script has nothing to do with that project.

REPO_PATH is now derived from the script's own location rather than a
hardcoded /Users path, so it runs from any clone on any machine and from any
working directory.

`script` is already in the exclude list in _config.yml, so none of this is
served from the site. Verified with a build.
@solrevdev
solrevdev merged commit f0c3e09 into master Aug 7, 2026
1 check passed
@solrevdev
solrevdev deleted the post/dotnet-rollforward-major branch August 7, 2026 07:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant