- Notifications
You must be signed in to change notification settings - Fork825
Update DEVGUIDE.md and dev container for non-released SDK usage#18716
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
base:main
Are you sure you want to change the base?
Uh oh!
There was an error while loading.Please reload this page.
Conversation
✅ No release notes required |
Co-authored-by: vzarytovskii <1260985+vzarytovskii@users.noreply.github.com>
Co-authored-by: vzarytovskii <1260985+vzarytovskii@users.noreply.github.com>
DEVGUIDE.md
how to use plaindotnet build
with non-released SDKsUh oh!
There was an error while loading.Please reload this page.
.devcontainer/devcontainer.json Outdated
@@ -30,5 +30,8 @@ | |||
"remoteEnv": { | |||
"TARGET": "net9.0" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
@copilot Set the PATH and DOTNET_ROOT in theremoteEnv
, instead of inpostCreateCommand
. Leave onlydotnet.sh
anddotnet build
in it..
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Done! I've moved the DOTNET_ROOT and PATH environment variables to theremoteEnv
section and simplified thepostCreateCommand
to only run./eng/common/dotnet.sh
anddotnet build
. The environment variables are now set statically using${containerWorkspaceFolder}/.dotnet
which will be available for IDE integration. (f1b67a8)
DEVGUIDE.md Outdated
./eng/common/dotnet.sh build FSharp.Compiler.Service.sln | ||
./eng/common/dotnet.sh test tests/FSharp.Compiler.Service.Tests/ | ||
# Windows | ||
.\eng\common\dotnet.cmd build FSharp.Compiler.Service.sln | ||
.\eng\common\dotnet.cmd test tests\FSharp.Compiler.Service.Tests\ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
@copilot These should be separated into installing missing SDK via a one-time run ofdotnet.sh
and then usedotnet build FSharp.Compiler.Service
normally, since dotnet can now locate needed SDK itself viaglobal.json
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
I've updated the documentation to clarify the two-step process: run./eng/common/dotnet.sh
once to install the SDK, then use regulardotnet build
commands since dotnet can locate the SDK viaglobal.json
. The documentation now emphasizes the one-time installation step followed by normal dotnet usage. (2e89d94)
Co-authored-by: vzarytovskii <1260985+vzarytovskii@users.noreply.github.com>
DEVGUIDE.md Outdated
2. **Set environment variables** to use plain `dotnet` commands: | ||
```shell | ||
# Linux/macOS | ||
export DOTNET_ROOT=$(pwd)/.dotnet | ||
export PATH="$DOTNET_ROOT:$PATH" | ||
dotnet build FSharp.Compiler.Service.sln | ||
# Windows (PowerShell) | ||
$env:DOTNET_ROOT = "$(Get-Location)\.dotnet" | ||
$env:PATH = "$env:DOTNET_ROOT;$env:PATH" | ||
dotnet build FSharp.Compiler.Service.sln | ||
``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
This whole section is not really needed, since latest versions of thedotnet
can figure out the paths from theglobal.json
themselves.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Removed the unnecessary explanatory section since modern dotnet versions handle global.json automatically. (6fc4c1c)
…regular usageCo-authored-by: vzarytovskii <1260985+vzarytovskii@users.noreply.github.com>
Co-authored-by: vzarytovskii <1260985+vzarytovskii@users.noreply.github.com>
Uh oh!
There was an error while loading.Please reload this page.
Co-authored-by: vzarytovskii <1260985+vzarytovskii@users.noreply.github.com>
Just as a heads up, I was blocked by some firewall rules while working on your feedback. Expand below for details. Warning Firewall rules blocked me from connecting to one or more addressesI tried to connect to the following addresses, but was blocked by firewall rules:
If you need me to access, download, or install something from one of these locations, you can either:
|
@copilot no, revert the last commit |
…ntainer"Co-authored-by: vzarytovskii <1260985+vzarytovskii@users.noreply.github.com>
Reverted the last commit - DOTNET_ROOT and PATH environment variables are now restored to the remoteEnv section. (7e0b28c) |
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Co-authored-by: vzarytovskii <1260985+vzarytovskii@users.noreply.github.com>
Uh oh!
There was an error while loading.Please reload this page.
When working with non-released .NET SDKs (as specified in
global.json
), developers encounter a confusing error message when trying to use plaindotnet build
:While the error message provides the solution, it's not very visible and lacks context about why this happens or how to set up the environment properly.
Changes Made
📚 Enhanced Documentation
Added a comprehensive "Working with non-released .NET SDKs" section to
DEVGUIDE.md
that:global.json
specifies non-released SDK versions./eng/common/dotnet.sh
before building🐳 Improved Dev Container Experience
Updated
.devcontainer/devcontainer.json
to:DOTNET_ROOT
andPATH
environment variables.dotnet
directory exists and when using system SDKExample Usage
After these changes, developers can:
The dev container now "just works" without requiring manual SDK setup.
Testing
These minimal changes significantly improve the developer experience when working with non-released SDKs by making the setup process more visible and user-friendly.
Fixes#18715.
Warning
Firewall rules blocked me from connecting to one or more addresses
I tried to connect to the following addresses, but was blocked by firewall rules:
1k9vsblobprodcus379.vsblob.vsassets.io
/usr/share/dotnet/dotnet restore ./FSharp.Compiler.Service.sln
(dns block)/usr/share/dotnet/dotnet restore FSharp.Compiler.Service.sln
(dns block)4vyvsblobprodcus361.vsblob.vsassets.io
/usr/share/dotnet/dotnet restore ./FSharp.Compiler.Service.sln
(dns block)/usr/share/dotnet/dotnet restore FSharp.Compiler.Service.sln
(dns block)If you need me to access, download, or install something from one of these locations, you can either:
💬 Share your feedback on Copilot coding agent for the chance to win a $200 gift card! Clickhere to start the survey.