feat(vscode): configure custom-code .NET runtimes - #9611
Open
Brian Lam (lambrianmsft) wants to merge 2 commits into
Open
feat(vscode): configure custom-code .NET runtimes#9611Brian Lam (lambrianmsft) wants to merge 2 commits into
Brian Lam (lambrianmsft) wants to merge 2 commits into
Conversation
Auto-generated by Graphify after source code changes. Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Add framework-specific custom-code app settings, preserve encrypted local settings, update the net10 template, keep net10 hidden in the wizard, and add focused unit and E2E coverage. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Contributor
🤖 AI PR Validation ReportPR Review ResultsThank you for your submission! Here's detailed feedback on your PR title and body compliance:✅ PR Title
✅ Commit Type
❌ Risk Level
✅ What & Why
✅ Impact of Change
✅ Test Plan
✅ Contributors
|
| Section | Status | Recommendation |
|---|---|---|
| Title | ✅ | No change needed |
| Commit Type | ✅ | Minor: label reads feature vs feat |
| Risk Level | ❌ | Add the missing risk:medium label to match the body |
| What & Why | ✅ | No change needed |
| Impact of Change | ✅ | No change needed |
| Test Plan | ✅ | No change needed |
| Contributors | ✅ | No change needed |
| Screenshots/Videos | Optionally attach the captured net10 picker screenshot |
Action required: This PR is blocked only by the missing risk label. Apply risk:medium (it matches both your body selection and the advised estimate) and this review will pass.
Powered by: Copilot CLI (claude-opus-4.8) | Last updated: Wed, 09 Sep 2026 22:52:38 GMT
Contributor
There was a problem hiding this comment.
Note
Copilot was unable to run its full agentic suite in this review.
Pull request overview
Adds support for recording the custom-code .NET target framework into the Logic App root local.settings.json and extends CI/E2E coverage to validate .NET 8 runtime behavior while keeping .NET 10 hidden in the Create Workspace picker.
Changes:
- Write
LOGIC_APPS_CUSTOMCODE_DOTNETVERSION(net8/net10.0) to the authoritative Logic App projectlocal.settings.json, preserving merge + encryption behavior. - Hide
.NET 10from the VS Code Create Workspace custom-code framework picker and update unit/UI/E2E coverage accordingly. - Add a dedicated CI job matrix (
net8,net10) and new E2E phases/tests for custom-code .NET version creation/assertion.
Reviewed changes
Copilot reviewed 23 out of 33 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| libs/vscode-extension/src/graphify-out/GRAPH_REPORT.md | Updates generated graph report metadata/content after changes. |
| libs/designer-ui/src/graphify-out/GRAPH_REPORT.md | Updates generated graph report metadata/content after changes. |
| libs/data-mapper-v2/src/graphify-out/GRAPH_REPORT.md | Updates generated graph report metadata/content after changes. |
| libs/chatbot/src/graphify-out/GRAPH_REPORT.md | Updates generated graph report metadata/content after changes. |
| libs/a2a-core/src/graphify-out/GRAPH_REPORT.md | Updates generated graph report metadata/content after changes. |
| apps/vs-code-react/src/app/createWorkspace/steps/dotNetFrameworkStep.tsx | Removes .NET 10 option from the framework picker options list. |
| apps/vs-code-react/src/app/createWorkspace/steps/test/dotNetFrameworkStep.test.tsx | Updates React tests to assert .NET 10 is hidden and selection behavior. |
| apps/vs-code-designer/src/test/ui/runHelpers.ts | Exports API-based action-status verifier for action-name-specific assertions. |
| apps/vs-code-designer/src/test/ui/run-e2e.ts | Adds custom-code .NET E2E phases, dotnet override settings, and target sharding. |
| apps/vs-code-designer/src/test/ui/customCodeDotNetVersionCreate.test.ts | New E2E create-phase test (net8 create / net10 hidden assertion). |
| apps/vs-code-designer/src/test/ui/customCodeDotNetVersionAssert.test.ts | New E2E assert-phase test for setting + full debug/run lifecycle evidence. |
| apps/vs-code-designer/src/test/ui/SKILL.md | Documents new E2E phase/mode and operational guidance. |
| apps/vs-code-designer/src/constants.ts | Adds constant for LOGIC_APPS_CUSTOMCODE_DOTNETVERSION setting key. |
| apps/vs-code-designer/src/assets/FunctionProjectTemplate/FunctionsProjNet10 | Pins Microsoft.ApplicationInsights.WorkerService to 2.21.0. |
| apps/vs-code-designer/src/app/utils/appSettings/localSettings.ts | Adds helper to write custom-code .NET version setting; preserves encryption. |
| apps/vs-code-designer/src/app/utils/appSettings/test/localSettings.test.ts | New unit tests covering setting write/merge/no-op/encryption behavior. |
| apps/vs-code-designer/src/app/utils/test/functionProjectFiles.test.ts | New tests verifying net10 template pin and generated csproj content. |
| apps/vs-code-designer/src/app/commands/createNewCodeProject/CodeProjectBase/test/CreateLogicAppWorkspaceIntegration.test.ts | Integration tests asserting setting written to authoritative Logic App path. |
| apps/vs-code-designer/src/app/commands/createNewCodeProject/CodeProjectBase/test/CreateLogicAppProject.test.ts | Adds tests asserting setting merge behavior and no-op for NetFx/rulesEngine. |
| apps/vs-code-designer/src/app/commands/createNewCodeProject/CodeProjectBase/CreateLogicAppWorkspace.ts | Writes custom-code .NET version setting after function project scaffolding. |
| apps/vs-code-designer/src/app/commands/createNewCodeProject/CodeProjectBase/CreateLogicAppProjects.ts | Writes custom-code .NET version setting for “add project” flow too. |
| .github/workflows/vscode-e2e.yml | Adds vscode-e2e-customcode-dotnet job and gates it in summary. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
|
||
| - name: Run custom-code .NET version create/assert + debug lifecycle E2E | ||
| run: | | ||
| export CUSTOMCODE_DOTNET_BINARY_PATH="$(command -v dotnet)" |
Comment on lines
+2508
to
+2511
| const systemDotnetRoot = process.env.CUSTOMCODE_DOTNET_ROOT?.trim() || path.dirname(systemDotnetBinary); | ||
|
|
||
| process.env.DOTNET_ROOT = systemDotnetRoot; | ||
| process.env.PATH = `${systemDotnetRoot}${path.delimiter}${originalPath || ''}`; |
Comment on lines
+7
to
+9
| * Drives the REAL Create Workspace webview to create a `Logic app with custom | ||
| * code` + Stateful workspace, targeting either `.NET 8` or `.NET 10`, selected | ||
| * via `CUSTOMCODE_DOTNET_E2E_VERSION` ('net8' | 'net10', default 'net8'). |
Comment on lines
+79
to
+92
| * Per-version fixed layout. Byte-for-byte identical to the constants block in | ||
| * customCodeDotNetVersionAssert.test.ts — keep the two files' tables in sync. | ||
| * Disjoint in BOTH the parent directory and every generated name so the two | ||
| * targets can never collide on disk or inside a `.code-workspace`, and so a | ||
| * stale directory from a previous local run cannot leak into either target. | ||
| */ | ||
| const WORKSPACE_PARENT_DIR = path.join(os.tmpdir(), 'la-e2e-test', `customcode-dotnet-${TARGET}-parent`); | ||
| const WORKSPACE_NAME = `cc${TARGET}ws`; | ||
| const APP_NAME = `cc${TARGET}app`; | ||
| const WORKFLOW_NAME = `cc${TARGET}wf`; | ||
| const CC_FOLDER_NAME = `cc${TARGET}folder`; | ||
| const FN_NAME = `cc${TARGET}fn`; | ||
| const FN_NAMESPACE = 'MyCompany.Functions'; | ||
|
|
Carlos Castro Trejo (ccastrotrejo)
approved these changes
Sep 9, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Commit Type
Risk Level
Risk rationale: Medium because this changes VS Code extension project creation, the Create Workspace webview, generated project configuration, encrypted local-settings handling, and required E2E CI coverage. The behavior is scoped to custom-code Logic App projects and has focused unit, UI, integration, and E2E coverage.
What & Why
Custom-code Logic App projects now record the associated .NET target in the Logic App root
local.settings.jsonby settingLOGIC_APPS_CUSTOMCODE_DOTNETVERSIONtonet8ornet10.0. This applies to new workspaces and custom-code projects added to existing Logic Apps, while leaving .NET Framework and non-custom-code projects unchanged.The setting uses the existing merge path so unrelated values are preserved. If
local.settings.jsonwas encrypted before the update, it is re-encrypted after the setting is written.This change also pins
Microsoft.ApplicationInsights.WorkerServiceto2.21.0in the .NET 10 function-project template, keeps.NET 10hidden from the custom-code Create Workspace picker, and adds focused CI coverage for the .NET 8 runtime lifecycle and the hidden .NET 10 option.Impact of Change
LOGIC_APPS_CUSTOMCODE_DOTNETVERSION=net8. Existing custom-code Logic Apps receive the corresponding setting when custom code is added..NET 10remains intentionally unavailable in the Create Workspace picker.Microsoft.ApplicationInsights.WorkerServiceversion2.21.0. VS Code E2E CI gains requirednet8andnet10matrix legs; net8 validates creation and the debug/run lifecycle, while net10 validates that the picker option remains hidden.Test Plan
.NET 8remains available and.NET 10is hidden across Windows and non-Windows picker states.npx tsup --config tsup.e2e.test.config.ts.customcodedotnetonlynet8 leg: real wizard creation, fresh-session reopen, setting assertion, debug, healthy runtime, callback invocation, succeeded run history, and custom-code action success.customcodedotnetonlynet10 leg: real wizard assertion that.NET 10is absent while.NET 8remains available.Contributors
Brian Lam (@lambrianmsft)
Screenshots/Videos
No layout or styling changes. The net10 real-wizard E2E captures and uploads a screenshot proving the option is hidden.