1:"$Sreact.fragment" 2:I[3361,["619","static/chunks/619-ba102abea3e3d0e4.js","558","static/chunks/app/layout-8ed3165a2efc4aed.js"],"default"] 3:I[8320,["619","static/chunks/619-ba102abea3e3d0e4.js","558","static/chunks/app/layout-8ed3165a2efc4aed.js"],"default"] 4:I[9766,[],""] 5:I[8924,[],""] 6:I[2619,["619","static/chunks/619-ba102abea3e3d0e4.js","856","static/chunks/app/guides/stemcode-dotnet-developers/page-72ae9690446f5ca4.js"],""] 7:I[9526,["619","static/chunks/619-ba102abea3e3d0e4.js","558","static/chunks/app/layout-8ed3165a2efc4aed.js"],"default"] 8:I[1503,["619","static/chunks/619-ba102abea3e3d0e4.js","558","static/chunks/app/layout-8ed3165a2efc4aed.js"],"default"] 9:I[2067,["619","static/chunks/619-ba102abea3e3d0e4.js","558","static/chunks/app/layout-8ed3165a2efc4aed.js"],"default"] a:I[271,["619","static/chunks/619-ba102abea3e3d0e4.js","558","static/chunks/app/layout-8ed3165a2efc4aed.js"],"default"] 10:I[7150,[],""] :HL["/_next/static/css/a106fc8500d469f6.css","style"] b:T461,{"@context":"https://schema.org","@type":"BlogPosting","headline":"StemCode for .NET Developers: AI Coding with C#, ASP.NET Core, Visual Studio, and dotnet","description":"Learn how .NET developers can set up StemCode for C#, ASP.NET Core, Visual Studio, csharp-ls, dotnet build, dotnet test, Entity Framework Core, refactoring, and AI code review.","datePublished":"2026-09-21","dateModified":"2026-09-21","author":{"@type":"Organization","name":"GrowBitLabs","url":"https://growbitlabs.com"},"publisher":{"@type":"Organization","name":"GrowBitLabs","url":"https://growbitlabs.com"},"mainEntityOfPage":"https://growbitlabs.com/guides/stemcode-dotnet-developers","url":"https://growbitlabs.com/guides/stemcode-dotnet-developers","keywords":"StemCode .NET, AI coding agent for .NET, AI coding assistant C#, ASP.NET Core AI coding, Visual Studio AI coding agent, C# code review AI, dotnet test AI, csharp-ls, repository aware AI coding","about":{"@type":"SoftwareApplication","name":"StemCode","applicationCategory":"DeveloperApplication","operatingSystem":"Windows, macOS, Linux","url":"https://growbitlabs.com/stemcode"}}0:{"P":null,"b":"52mZGPOTbZG1yQUVMfwha","p":"","c":["","guides","stemcode-dotnet-developers"],"i":false,"f":[[["",{"children":["guides",{"children":["stemcode-dotnet-developers",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/a106fc8500d469f6.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L2",null,{"children":[["$","div",null,{"className":"scroll-progress","id":"scrollProgress"}],["$","$L3",null,{}],["$","main",null,{"id":"top","children":["$","$L4",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","section",null,{"className":"inner-hero","children":["$","div",null,{"className":"container","children":[["$","div",null,{"className":"inner-eyebrow reveal","children":[["$","span",null,{"children":"404"}],["$","i",null,{}],["$","span",null,{"children":"PAGE NOT FOUND"}]]}],["$","div",null,{"className":"inner-hero-copy reveal","children":[["$","h1",null,{"children":["This page took a wrong ",["$","em",null,{"children":"turn."}]]}],["$","p",null,{"children":"The address may have changed, or the page may no longer be available."}],["$","div",null,{"className":"inner-hero-actions","children":[["$","$L6",null,{"className":"btn primary","href":"/","children":"GO HOME"}],["$","$L6",null,{"className":"btn text","href":"/stemcode","children":"VIEW STEMCODE →"}]]}]]}]]}]}],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}],["$","$L7",null,{}],["$","footer",null,{"className":"site-footer","children":["$","div",null,{"className":"container footer-shell","children":[["$","div",null,{"className":"footer-brand-block","children":[["$","$L6",null,{"className":"brand brand-footer","href":"/","aria-label":"GrowBitLabs home","children":["$","img",null,{"className":"brand-logo","src":"/assets/logo.png","alt":"GrowBitLabs logo"}]}],["$","p",null,{"children":"Home of StemCode and GrowBit Convo. Local-first AI development, private AI infrastructure, and agent engineering."}]]}],["$","div",null,{"className":"footer-columns","children":[["$","nav",null,{"aria-label":"Solutions links","children":[["$","strong",null,{"children":"SOLUTIONS"}],["$","$L6",null,{"href":"/stemcode","children":"StemCode"}],["$","$L6",null,{"href":"/stemcode-survey","children":"StemCode Survey"}],["$","$L6",null,{"href":"/compare","children":"StemCode Comparisons"}],["$","$L6",null,{"href":"/growbit-convo","children":"GrowBit Convo"}],["$","$L6",null,{"href":"/open-models","children":"Open Models"}],["$","$L6",null,{"href":"/pricing","children":"Pricing"}],["$","$L6",null,{"href":"/enterprise","children":"Enterprise"}],["$","$L6",null,{"href":"/docs","children":"StemCode Docs"}],["$","$L6",null,{"href":"/guides","children":"Developer Guides"}]]}],["$","nav",null,{"aria-label":"Company links","children":[["$","strong",null,{"children":"COMPANY"}],["$","$L6",null,{"href":"/about","children":"About"}],["$","$L6",null,{"href":"/services","children":"Services"}],["$","$L6",null,{"href":"/contact","children":"Contact"}],["$","$L6",null,{"href":"/careers","children":"Careers"}],["$","$L6",null,{"href":"/press","children":"Press"}]]}],["$","nav",null,{"aria-label":"Legal links","children":[["$","strong",null,{"children":"LEGAL"}],["$","$L6",null,{"href":"/privacy","children":"Privacy Policy"}],["$","$L6",null,{"href":"/terms","children":"Terms of Service"}],["$","$L8",null,{}]]}],["$","nav",null,{"aria-label":"Social links","children":[["$","strong",null,{"children":"SOCIAL"}],["$","a",null,{"href":"https://www.linkedin.com/company/growbitlabs","target":"_blank","rel":"noopener noreferrer","children":"LinkedIn"}],["$","a",null,{"href":"https://www.facebook.com/growbitlabs/","target":"_blank","rel":"noopener noreferrer","children":"Facebook"}]]}]]}],["$","div",null,{"className":"footer-bottom","children":[["$","span",null,{"children":["(c) ",["$","span",null,{"id":"year"}]," GrowBitLabs"]}],["$","span",null,{"children":"StemCode + GrowBit Convo"}]]}]]}]}],["$","$L9",null,{}],["$","$La",null,{}]]}]}]}]]}],{"children":["guides",["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["stemcode-dotnet-developers",["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"$b"}}],"$Lc","$Ld"],null,"$Le"]}],{},null,false]},null,false]},null,false]},null,false],"$Lf",false]],"m":"$undefined","G":["$10",[]],"s":false,"S":true} 1e:I[4431,[],"OutletBoundary"] 20:I[5278,[],"AsyncMetadataOutlet"] 22:I[4431,[],"ViewportBoundary"] 24:I[4431,[],"MetadataBoundary"] 25:"$Sreact.suspense" c:["$","section",null,{"className":"inner-hero docs-hero","children":["$","div",null,{"className":"container","children":[["$","div",null,{"className":"inner-eyebrow reveal","children":[["$","$L6",null,{"href":"/guides","children":"RESOURCES / GUIDES"}],["$","i",null,{}],["$","span",null,{"children":".NET"}]]}],["$","div",null,{"className":"inner-hero-copy reveal","children":[["$","h1",null,{"children":["StemCode for .NET Developers: AI Coding with ",["$","em",null,{"children":"C# and ASP.NET Core."}]]}],["$","p",null,{"children":"Learn how .NET developers can set up StemCode for C#, ASP.NET Core, Visual Studio, csharp-ls, dotnet build, dotnet test, Entity Framework Core, refactoring, and AI code review."}],["$","div",null,{"className":"inner-hero-actions docs-hero-actions","children":[["$","a",null,{"className":"btn primary","href":"#setup","children":"START SETUP"}],["$","$L6",null,{"className":"btn text","href":"/stemcode","children":"EXPLORE STEMCODE →"}]]}],["$","div",null,{"className":"docs-meta-strip","aria-label":"Guide metadata","children":[["$","span",null,{"children":["PUBLISHED ","2026-09-21"]}],["$","span",null,{"children":"STEMCODE DEVELOPER GUIDE"}],["$","span",null,{"children":"LOCAL-FIRST AI CODING"}]]}]]}]]}]}] d:["$","section",null,{"className":"docs-layout section","children":["$","div",null,{"className":"container docs-shell docs-shell-wide","children":[["$","aside",null,{"className":"docs-sidebar","aria-label":"Guide table of contents","children":[["$","span",null,{"className":"toc-label","children":"GUIDE"}],["$","$L6",null,{"href":"/guides","children":"All developer guides"}],["$","$L6",null,{"href":"/stemcode","children":"StemCode overview"}],["$","$L6",null,{"href":"/docs","children":"StemCode docs"}],["$","span",null,{"className":"toc-label","children":"ON THIS PAGE"}],["$","a",null,{"href":"#agents-md","children":"AGENTS.md project instructions"}],[["$","a","#why",{"href":"#why","children":"Why StemCode for .NET"}],["$","a","#setup",{"href":"#setup","children":"Install and set up"}],["$","a","#csharp-lsp",{"href":"#csharp-lsp","children":"C# code intelligence"}],["$","a","#aspnet",{"href":"#aspnet","children":"ASP.NET Core workflow"}],["$","a","#build-test",{"href":"#build-test","children":"Build and test"}],["$","a","#ef-core",{"href":"#ef-core","children":"Entity Framework Core"}],["$","a","#refactoring",{"href":"#refactoring","children":"Refactoring"}],["$","a","#visual-studio",{"href":"#visual-studio","children":"Visual Studio workflow"}],["$","a","#memory",{"href":"#memory","children":"Project memory"}],["$","a","#review",{"href":"#review","children":"Git and code review"}],["$","a","#faq",{"href":"#faq","children":"FAQ"}]]]}],["$","article",null,{"className":"docs-content","children":[["$","section",null,{"id":"agents-md","className":"docs-section reveal","children":[["$","span",null,{"children":"PROJECT INSTRUCTIONS / AGENTS.MD"}],["$","h2",null,{"children":"Give StemCode durable repository instructions before asking it to edit."}],["$","p",null,{"children":["Add an ",["$","code",null,{"children":"AGENTS.md"}]," file at the repository root for persistent project instructions. StemCode loads",["$","code",null,{"children":" AGENTS.md"}]," or ",["$","code",null,{"children":".agent/AGENTS.md"}]," from the workspace into the model context, so this is the right place for architecture boundaries, generated-file rules, coding conventions, validation expectations, and manual setup notes that should apply across sessions."]}],["$","div",null,{"className":"docs-note","children":[["$","b",null,{"children":"Keep AGENTS.md practical and repository-specific"}],["$","p",null,{"children":"Prefer concrete rules the agent can act on: where important source lives, what it must not edit, which patterns it should preserve, and which checks it should run after a change."}]]}],["$","pre",null,{"children":["$","code",null,{"children":"# .NET Project Instructions\n\nThis is a .NET / C# project.\n\nImportant source and configuration:\n- *.sln and *.csproj\n- src/\n- tests/\n- Directory.Build.props and Directory.Packages.props when present\n\nFollow these rules:\n- Use the repository's existing C# style, architecture, dependency injection, and error-handling patterns.\n- Do not modify bin/, obj/, generated files, or package caches.\n- Keep ASP.NET Core controllers/endpoints thin when the project already separates application logic.\n- Preserve async and CancellationToken conventions across request-scoped work.\n- Do not add NuGet packages unless the task requires them.\n- After changes, run the smallest relevant dotnet build and dotnet test scope before broader validation."}]}],["$","p",null,{"children":"Commit the file with the project so the same instructions are reviewable and shared by everyone using StemCode in the repository."}]]}],[["$","section",null,{"id":"why","className":"docs-section reveal","children":[["$","span",null,{"children":"01 / WHY STEMCODE FOR .NET"}],["$","h2",null,{"children":"Use AI across the solution, not only inside one C# file."}],["$","p",null,{"children":"Professional .NET development involves much more than generating code. A typical task can require tracing dependency injection, understanding application and domain boundaries, reviewing Entity Framework queries, running builds, investigating tests, checking Git changes, and moving between Visual Studio and the terminal."}],"$L11","$L12"]}],"$L13","$L14","$L15","$L16","$L17","$L18","$L19","$L1a","$L1b","$L1c"],"$L1d"]}]]}]}] e:["$","$L1e",null,{"children":["$L1f",["$","$L20",null,{"promise":"$@21"}]]}] f:["$","$1","h",{"children":[null,[["$","$L22",null,{"children":"$L23"}],null],["$","$L24",null,{"children":["$","div",null,{"hidden":true,"children":["$","$25",null,{"fallback":null,"children":"$L26"}]}]}]]}] 11:["$","p",null,{"children":"StemCode is designed around that complete engineering loop. It works against the repository you already use, can inspect multiple projects, use Language Server Protocol code intelligence, make tracked edits, run approved shell commands, and review the resulting diff."}] 12:["$","div",null,{"className":"docs-callout docs-callout-strong","children":[["$","strong",null,{"children":"GOOD FIT FOR .NET TEAMS"}],["$","p",null,{"children":"C#, ASP.NET Core, Web APIs, worker services, Clean Architecture, modular monoliths, microservices, Entity Framework Core, xUnit, NUnit, MSTest, Visual Studio, VS Code, and normal Git workflows can all remain part of the same development process."}]]}] 13:["$","section",null,{"id":"setup","className":"docs-section reveal","children":[["$","span",null,{"children":"02 / SETUP"}],["$","h2",null,{"children":"Install StemCode and open your existing .NET repository."}],["$","p",null,{"children":"StemCode ships as a self-contained CLI. Installing the CLI does not require the .NET SDK, although your application will still need its normal SDK and runtime to build and test."}],["$","div",null,{"className":"doc-command","children":[["$","b",null,{"children":"npm"}],["$","code",null,{"children":"npm install -g stemcode"}]]}],["$","div",null,{"className":"doc-command","children":[["$","b",null,{"children":"pnpm"}],["$","code",null,{"children":"pnpm add -g stemcode"}]]}],["$","p",null,{"children":"Then start StemCode from the solution or repository root:"}],["$","pre",null,{"children":["$","code",null,{"children":["cd MyDotNetSolution","\n","stemcode"]}]}],["$","p",null,{"children":"The first run guides you through selecting a provider and model. After the workspace opens, initialize repository-level StemCode files with:"}],["$","pre",null,{"children":["$","code",null,{"children":"/init"}]}],["$","p",null,{"children":["This gives the repository a reviewable place for shared commands, development conventions, architecture notes, and test strategy. See the ",["$","$L6",null,{"href":"/docs#workspace","children":" workspace documentation"}]," for the full configuration model."]}]]}] 14:["$","section",null,{"id":"csharp-lsp","className":"docs-section reveal","children":[["$","span",null,{"children":"03 / C# CODE INTELLIGENCE"}],["$","h2",null,{"children":"Connect StemCode to semantic C# navigation."}],["$","p",null,{"children":"Text search is useful, but large C# solutions benefit from semantic information about definitions, references, symbols, diagnostics, and implementations. StemCode supports LSP-powered code intelligence and includes built-in detection for C# language servers."}],["$","h3",null,{"children":"Install csharp-ls"}],["$","pre",null,{"children":["$","code",null,{"children":"dotnet tool install --global csharp-ls"}]}],["$","p",null,{"children":"Refresh language-server detection inside StemCode:"}],["$","pre",null,{"children":["$","code",null,{"children":"/lsp refresh"}]}],["$","p",null,{"children":"Check all detected language servers:"}],["$","pre",null,{"children":["$","code",null,{"children":"/lsp"}]}],["$","p",null,{"children":"Or inspect candidates for a particular source file:"}],["$","pre",null,{"children":["$","code",null,{"children":"/lsp file src/MyCompany.Application/Orders/OrderService.cs"}]}],["$","div",null,{"className":"docs-note","children":[["$","b",null,{"children":"Why this matters"}],["$","p",null,{"children":"A repository-aware AI agent becomes more useful when it can combine normal repository search with C# symbol information. That is especially helpful when interfaces, partial classes, generic types, extension methods, and multiple projects make plain text navigation ambiguous."}]]}]]}] 15:["$","section",null,{"id":"aspnet","className":"docs-section reveal","children":[["$","span",null,{"children":"04 / ASP.NET CORE"}],["$","h2",null,{"children":"Trace a feature before asking the agent to change it."}],["$","p",null,{"children":"One of the highest-value uses of StemCode is understanding an unfamiliar ASP.NET Core feature before editing anything. Instead of opening controllers, handlers, repositories, and tests manually, ask for the end-to-end flow."}],["$","div",null,{"className":"docs-feature-card","children":[["$","span",null,{"children":"EXAMPLE PROMPT"}],["$","h3",null,{"children":"Trace order creation"}],["$","p",null,{"children":"Trace the complete order creation flow from the HTTP endpoint through validation, application services or handlers, domain logic, persistence, transactions, and emitted events. Identify the most important classes and methods."}]]}],["$","p",null,{"children":"Then narrow the investigation:"}],["$","pre",null,{"children":["$","code",null,{"children":"Find every place OrderStatus is modified and explain the valid state transitions."}]}],["$","p",null,{"children":"Once the repository is understood, move to implementation with a prompt that explicitly asks StemCode to inspect existing patterns first:"}],["$","pre",null,{"children":["$","code",null,{"children":"Add support for cancelling an order before shipment.\n\nBefore editing:\n- find the existing API conventions\n- identify authorization rules\n- inspect the application and domain flow\n- find persistence changes\n- identify relevant tests\n\nThen implement the feature, run the relevant tests, and review the final diff."}]}]]}] 16:["$","section",null,{"id":"build-test","className":"docs-section reveal","children":[["$","span",null,{"children":"05 / BUILD AND TEST"}],["$","h2",null,{"children":"Keep the real dotnet toolchain in the loop."}],["$","p",null,{"children":"The goal is not to replace the .NET SDK. It is to let the agent use the same build and test commands your team already trusts."}],["$","div",null,{"className":"docs-grid-2","children":[["$","div",null,{"className":"docs-feature-card","children":[["$","span",null,{"children":"BUILD"}],["$","h3",null,{"children":"Compile the solution."}],["$","pre",null,{"children":["$","code",null,{"children":["dotnet restore","\n","dotnet build"]}]}]]}],["$","div",null,{"className":"docs-feature-card","children":[["$","span",null,{"children":"TEST"}],["$","h3",null,{"children":"Run targeted validation."}],["$","pre",null,{"children":["$","code",null,{"children":"dotnet test tests/MyCompany.Application.Tests"}]}]]}]]}],["$","p",null,{"children":"For large repositories, ask StemCode to start with the smallest useful validation scope:"}],["$","pre",null,{"children":["$","code",null,{"children":"Run the smallest relevant test project first. If it passes, run the broader solution tests."}]}],["$","h3",null,{"children":"Add a reusable .NET validation command"}],["$","p",null,{"children":["Teams can turn the normal restore, build, and targeted test loop into a project command under ",["$","code",null,{"children":".stemcode/commands"}],". After this file is committed, developers can run it in StemCode as",["$","code",null,{"children":" /dotnet-validate"}],"."]}],["$","pre",null,{"children":["$","code",null,{"children":"---\nname: dotnet-validate\ndescription: Restore, build, and test the .NET solution\nargs: [\"solution\", \"testProject\"]\n---\n\nValidate the .NET workspace using the real dotnet toolchain.\n\nRun these commands in order:\n\n1. dotnet restore $solution\n2. dotnet build $solution --no-restore\n3. dotnet test $testProject --no-build\n\nIf a command fails, stop, summarize the failure, identify the most\nrelevant files or projects, and explain the next fix before editing."}]}],["$","h3",null,{"children":"Important allow-list checks"}],["$","p",null,{"children":"Build commands may touch package caches, generated assets, and test outputs, so keep permission prompts explicit. Before a validation-heavy session, inspect the current rules:"}],["$","pre",null,{"children":["$","code",null,{"children":"/permissions\n/rules\n/allow shell \"dotnet restore *\"\n/allow shell \"dotnet build *\"\n/allow shell \"dotnet test *\""}]}],["$","p",null,{"children":["The important tool categories for this workflow are repository file read/search, C# language-server inspection, shell execution for",["$","code",null,{"children":" dotnet restore"}],", ",["$","code",null,{"children":" dotnet build"}],", and",["$","code",null,{"children":" dotnet test"}],", and file writes only when you ask StemCode to implement a fix."]}],["$","h3",null,{"children":"Use failures as repository context"}],["$","pre",null,{"children":["$","code",null,{"children":"Run the failing test, trace the failure back to production code, and explain the root cause before changing anything."}]}]]}] 17:["$","section",null,{"id":"ef-core","className":"docs-section reveal","children":[["$","span",null,{"children":"06 / ENTITY FRAMEWORK CORE"}],["$","h2",null,{"children":"Review persistence behavior, not only syntax."}],["$","p",null,{"children":"Entity Framework issues often cross repositories, projections, navigation properties, mapping, API serialization, and transaction boundaries. StemCode can inspect the full feature rather than one LINQ expression at a time."}],["$","div",null,{"className":"docs-grid-2","children":[["$","div",null,{"className":"docs-feature-card","children":[["$","span",null,{"children":"QUERY REVIEW"}],["$","h3",null,{"children":"Look for expensive data access."}],["$","p",null,{"children":"Review the order loading flow for N+1 queries, unnecessary Includes, broad entity loading, client-side work, and places where projections would be more appropriate."}]]}],["$","div",null,{"className":"docs-feature-card","children":[["$","span",null,{"children":"MIGRATIONS"}],["$","h3",null,{"children":"Check deployment impact."}],["$","p",null,{"children":"Review the new EF Core migration for destructive changes, backwards compatibility, long-running operations, or rollout sequencing risks."}]]}]]}]]}] 18:["$","section",null,{"id":"refactoring","className":"docs-section reveal","children":[["$","span",null,{"children":"07 / REFACTORING"}],["$","h2",null,{"children":"Plan risky C# refactors before modifying dozens of files."}],["$","p",null,{"children":"Semantic navigation becomes particularly valuable when a change affects an interface with many callers or implementations."}],["$","pre",null,{"children":["$","code",null,{"children":"Find every implementation and caller of IPaymentService. Explain what would be affected if authorization and capture were split into separate abstractions."}]}],["$","p",null,{"children":"For higher-risk work, switch to a planning profile:"}],["$","pre",null,{"children":["$","code",null,{"children":"/profile plan"}]}],["$","p",null,{"children":"Then ask for a staged migration:"}],["$","pre",null,{"children":["$","code",null,{"children":"Create a step-by-step refactoring plan that keeps the solution buildable between steps. Do not modify files yet."}]}]]}] 19:["$","section",null,{"id":"visual-studio","className":"docs-section reveal","children":[["$","span",null,{"children":"08 / VISUAL STUDIO"}],["$","h2",null,{"children":"Keep Visual Studio for deep IDE work and add repository-wide AI."}],["$","p",null,{"children":"StemCode also has a Visual Studio integration powered by the local CLI. That lets .NET developers keep familiar debugging, profiling, solution management, and editor workflows while using StemCode for repository exploration and agent tasks."}],["$","div",null,{"className":"docs-grid-2","children":[["$","div",null,{"className":"docs-feature-card","children":[["$","span",null,{"children":"REVIEW"}],["$","h3",null,{"children":"Inspect current work."}],["$","p",null,{"children":"Review my changes for regressions, async and cancellation issues, public API compatibility, authorization mistakes, and missing tests."}]]}],["$","div",null,{"className":"docs-feature-card","children":[["$","span",null,{"children":"INVESTIGATE"}],["$","h3",null,{"children":"Follow difficult code paths."}],["$","p",null,{"children":"Explain this exception path and identify where cancellation, transaction state, or error context is being lost."}]]}]]}]]}] 1a:["$","section",null,{"id":"memory","className":"docs-section reveal","children":[["$","span",null,{"children":"09 / PROJECT MEMORY"}],["$","h2",null,{"children":"Teach StemCode your .NET architecture once."}],["$","p",null,{"children":["Repository memory under the ",["$","code",null,{"children":".stemcode"}]," directory can keep long-lived engineering context reviewable and versionable."]}],["$","h3",null,{"children":"Example architecture notes"}],["$","pre",null,{"children":["$","code",null,{"children":"The solution follows Clean Architecture.\n\nDomain does not depend on Application or Infrastructure.\nApplication depends on persistence abstractions.\nInfrastructure contains Entity Framework implementations.\nControllers delegate business behavior to application handlers."}]}],["$","h3",null,{"children":"Example C# conventions"}],["$","pre",null,{"children":["$","code",null,{"children":"All asynchronous public methods accept CancellationToken.\nUse records for immutable request and response DTOs.\nDo not place business logic in ASP.NET Core controllers.\nPrefer existing validation and error-result conventions."}]}]]}] 1b:["$","section",null,{"id":"review","className":"docs-section reveal","children":[["$","span",null,{"children":"10 / GIT AND CODE REVIEW"}],["$","h2",null,{"children":"Use StemCode as an additional .NET review pass."}],["$","p",null,{"children":"Before opening a pull request, ask StemCode to review the current Git diff with stack-specific concerns in mind."}],["$","pre",null,{"children":["$","code",null,{"children":"Review the current Git diff as a senior .NET reviewer.\n\nFocus on:\n- correctness and regressions\n- nullable-reference handling\n- async/await and CancellationToken propagation\n- concurrency\n- Entity Framework behavior\n- dependency-injection lifetimes\n- public API compatibility\n- authorization and security\n- missing tests"}]}],["$","p",null,{"children":"You can also pipe a diff into a review profile:"}],["$","pre",null,{"children":["$","code",null,{"children":"git diff | stemcode --stdin --profile review"}]}],["$","div",null,{"className":"docs-callout","children":[["$","strong",null,{"children":"USE AI AS PART OF THE LOOP"}],["$","p",null,{"children":"A strong workflow is: understand → plan → implement → build → test → debug → review. The compiler, tests, Git diff, and developer remain authoritative checkpoints."}]]}]]}] 1c:["$","section",null,{"id":"faq","className":"docs-section reveal","children":[["$","span",null,{"children":"11 / FAQ"}],["$","h2",null,{"children":"StemCode for .NET developers: common questions."}],["$","h3",null,{"children":"Can StemCode work with ASP.NET Core?"}],["$","p",null,{"children":"Yes. StemCode operates against the repository, so it can inspect and modify ASP.NET Core projects alongside class libraries, workers, infrastructure projects, and tests."}],["$","h3",null,{"children":"Can StemCode run dotnet test?"}],["$","p",null,{"children":"Yes. StemCode can execute approved shell commands, including the normal dotnet build and test commands used by your repository."}],["$","h3",null,{"children":"Does StemCode replace Visual Studio?"}],["$","p",null,{"children":"No. Visual Studio remains useful for debugging, profiling, solution management, and deep IDE features. StemCode adds repository-aware AI analysis and automation around those workflows."}],["$","h3",null,{"children":"Can StemCode understand C# references and implementations?"}],["$","p",null,{"children":"StemCode supports LSP-powered code intelligence. Installing a compatible C# language server such as csharp-ls gives it richer semantic navigation."}],["$","h3",null,{"children":"Can teams share StemCode project conventions?"}],["$","p",null,{"children":["Yes. Workspace commands and selected memory files under",["$","code",null,{"children":" .stemcode"}]," can be reviewed and committed with the repository when the team wants shared agent context."]}]]}] 1d:["$","section",null,{"className":"docs-section reveal","children":[["$","span",null,{"children":"NEXT STEP"}],["$","h2",null,{"children":"Put StemCode to work in a real repository."}],["$","p",null,{"children":"Install StemCode, open the project you already work in, and begin with a repository-understanding task before asking the agent to change code. That gives the model better context and keeps the workflow reviewable."}],["$","div",null,{"className":"docs-grid-2 docs-spaced","children":[["$","div",null,{"className":"docs-feature-card","children":[["$","span",null,{"children":"INSTALL"}],["$","h3",null,{"children":"Start with the CLI."}],["$","pre",null,{"children":["$","code",null,{"children":["npm install -g stemcode","\n","cd your-project","\n","stemcode"]}]}]]}],["$","div",null,{"className":"docs-feature-card","children":[["$","span",null,{"children":"LEARN"}],["$","h3",null,{"children":"Go deeper."}],["$","p",null,{"children":"Read the full StemCode documentation for providers, permissions, LSP integrations, memory, MCP, CI review, and advanced workspace configuration."}],["$","$L6",null,{"className":"inline-arrow","href":"/docs","children":"READ THE DOCS →"}]]}]]}]]}] 23:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","2",{"name":"theme-color","content":"#f4f5f0"}]] 1f:null 27:I[622,[],"IconMark"] 21:{"metadata":[["$","title","0",{"children":"StemCode for .NET Developers: AI Coding with C#, ASP.NET Core, Visual Studio, and dotnet | GrowBitLabs"}],["$","meta","1",{"name":"description","content":"Learn how .NET developers can set up StemCode for C#, ASP.NET Core, Visual Studio, csharp-ls, dotnet build, dotnet test, Entity Framework Core, refactoring, and AI code review."}],["$","meta","2",{"name":"keywords","content":"StemCode .NET,AI coding agent for .NET,AI coding assistant C#,ASP.NET Core AI coding,Visual Studio AI coding agent,C# code review AI,dotnet test AI,csharp-ls,repository aware AI coding"}],["$","meta","3",{"name":"robots","content":"index, follow"}],["$","meta","4",{"name":"googlebot","content":"index, follow"}],["$","link","5",{"rel":"canonical","href":"https://growbitlabs.com/guides/stemcode-dotnet-developers"}],["$","meta","6",{"property":"og:title","content":"StemCode for .NET Developers: AI Coding with C#, ASP.NET Core, Visual Studio, and dotnet"}],["$","meta","7",{"property":"og:description","content":"Learn how .NET developers can set up StemCode for C#, ASP.NET Core, Visual Studio, csharp-ls, dotnet build, dotnet test, Entity Framework Core, refactoring, and AI code review."}],["$","meta","8",{"property":"og:url","content":"https://growbitlabs.com/guides/stemcode-dotnet-developers"}],["$","meta","9",{"property":"og:type","content":"article"}],["$","meta","10",{"property":"article:published_time","content":"2026-09-21"}],["$","meta","11",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","12",{"name":"twitter:title","content":"StemCode for .NET Developers: AI Coding with C#, ASP.NET Core, Visual Studio, and dotnet"}],["$","meta","13",{"name":"twitter:description","content":"Learn how .NET developers can set up StemCode for C#, ASP.NET Core, Visual Studio, csharp-ls, dotnet build, dotnet test, Entity Framework Core, refactoring, and AI code review."}],["$","link","14",{"rel":"icon","href":"/assets/fav.png","sizes":"196x186","type":"image/png"}],["$","link","15",{"rel":"apple-touch-icon","href":"/assets/fav.png","sizes":"196x186","type":"image/png"}],["$","$L27","16",{}]],"error":null,"digest":"$undefined"} 26:"$21:metadata"