Skip to content

Conversation

@arika0093
Copy link
Owner

@arika0093 arika0093 commented Nov 27, 2025

This pull request updates the project's .NET version support and streamlines related configuration files. The main focus is to standardize on .NET 10.0 for builds, tests, and examples, while cleaning up obsolete or redundant settings.

.NET Version Standardization:

  • Updated the dev container to only include .NET 10.0 as an additional version, removing support for 8.0 and 6.0 (.devcontainer/devcontainer.json).
  • Changed the GitHub Actions workflow to use only .NET 10.0, setting DOTNET_VERSION to 10.0.x and updating the setup step to reference this environment variable (.github/workflows/test.yaml). [1] [2]

Project and Test Configuration:

  • Updated examples/Directory.Build.props to explicitly target net10.0.
  • Removed explicit TargetFramework settings from individual example project files, relying on the shared props file instead (Linqraft.ApiSample.csproj, Linqraft.Benchmark.csproj, Linqraft.MinimumSample.csproj, Linqraft.Sample.csproj). [1] [2] [3] [4]
  • Simplified test project configuration to default to net10.0 unless overridden, and removed legacy multi-targeting and Windows-specific settings (tests/Directory.Build.props).
  • Removed the unused Newtonsoft.Json package reference from test dependencies (tests/Directory.Build.props).
  • Removed explicit TargetFrameworks property from Linqraft.Analyzer.Tests.csproj to rely on the shared configuration.

Summary by CodeRabbit

  • Chores
    • Consolidated .NET version support to 10.0 across development and testing environments.
    • Simplified CI/CD workflow configuration by centralizing version management through environment variables.
    • Centralized target framework configuration for example projects via shared build properties.
    • Removed Newtonsoft.Json dependency from test suite.

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link

coderabbitai bot commented Nov 27, 2025

Walkthrough

The pull request consolidates .NET 10.0 targeting across the project by updating devcontainer configuration to support only .NET 10.0, introducing dotnet version environment variables in CI workflows, centralizing target framework definitions in Directory.Build.props files, and removing explicit TargetFramework entries from individual project files to inherit from build props instead.

Changes

Cohort / File(s) Summary
Dev & CI Configuration
.devcontainer/devcontainer.json, .github/workflows/test.yaml
Reduces devcontainer supported .NET versions from "10.0, 8.0, 6.0" to "10.0"; introduces DOTNET_VERSION workflow environment variable and replaces hard-coded multi-version list with environment variable reference in Setup .NET step
Build Props (Framework Defaults)
examples/Directory.Build.props, tests/Directory.Build.props
Adds net10.0 target framework to examples build props; updates tests build props to use conditional $(TFMS) variable (defaulting to net10.0) and removes Newtonsoft.Json package reference
Example Projects (TargetFramework Removal)
examples/Linqraft.ApiSample/Linqraft.ApiSample.csproj, examples/Linqraft.Benchmark/Linqraft.Benchmark.csproj, examples/Linqraft.MinimumSample/Linqraft.MinimumSample.csproj, examples/Linqraft.Sample/Linqraft.Sample.csproj
Removes explicit net10.0 TargetFramework entries from each project, allowing inheritance from centralized Directory.Build.props
Test Projects (TargetFrameworks Removal)
tests/Linqraft.Analyzer.Tests/Linqraft.Analyzer.Tests.csproj
Removes explicit TargetFrameworks element, allowing inheritance from centralized tests/Directory.Build.props configuration

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

  • Areas for attention:
    • Verify that all example and test projects correctly inherit the net10.0 target framework from their respective Directory.Build.props files
    • Confirm that the $(TFMS) conditional in tests/Directory.Build.props properly defaults to net10.0 when the environment variable is not set
    • Ensure CI workflow correctly references env.DOTNET_VERSION and that the environment variable is properly defined at the workflow level

Possibly related PRs

  • PR #20: Modifies CI dotnet version configuration and updates project target frameworks to .NET 10, indicating directly overlapping framework consolidation efforts.
  • PR #25: Updates build configuration and Directory.Build.props with framework targeting changes, showing related build system modifications.

Poem

🐰 A rabbit hops through .NET ten,
Consolidating frameworks then and when,
No six or eight need apply today,
Just ten will point the hoppy way! 🎯
Build props now reign, from props we've thinned,
Configuration unified and pinned.

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'chore: use .NET10 only' is clear, concise, and directly captures the main objective: standardizing the repository to use only .NET 10.0, which is the primary change reflected across all modified files.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch chore/use-only-dotnet10

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
.github/workflows/test.yaml (1)

41-42: Consider adding dotnet clean before build to avoid stale generator caches.

Based on learnings, this project requires a clean build to avoid stale generator caches. The current build step does not include a clean phase. While CI workflows often skip clean for performance, the learnings explicitly recommend: dotnet clean && dotnet build --no-incremental.

Can you confirm whether this is a pre-existing gap in the workflow, or if a clean build should be included as part of this PR? If needed, apply this diff:

       - name: Build
-        run: dotnet build --no-restore
+        run: dotnet clean && dotnet build --no-restore
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 00284a7 and 3b116e4.

📒 Files selected for processing (9)
  • .devcontainer/devcontainer.json (1 hunks)
  • .github/workflows/test.yaml (2 hunks)
  • examples/Directory.Build.props (1 hunks)
  • examples/Linqraft.ApiSample/Linqraft.ApiSample.csproj (0 hunks)
  • examples/Linqraft.Benchmark/Linqraft.Benchmark.csproj (0 hunks)
  • examples/Linqraft.MinimumSample/Linqraft.MinimumSample.csproj (0 hunks)
  • examples/Linqraft.Sample/Linqraft.Sample.csproj (0 hunks)
  • tests/Directory.Build.props (1 hunks)
  • tests/Linqraft.Analyzer.Tests/Linqraft.Analyzer.Tests.csproj (0 hunks)
💤 Files with no reviewable changes (5)
  • examples/Linqraft.Benchmark/Linqraft.Benchmark.csproj
  • examples/Linqraft.ApiSample/Linqraft.ApiSample.csproj
  • examples/Linqraft.Sample/Linqraft.Sample.csproj
  • examples/Linqraft.MinimumSample/Linqraft.MinimumSample.csproj
  • tests/Linqraft.Analyzer.Tests/Linqraft.Analyzer.Tests.csproj
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-11-25T12:08:35.836Z
Learnt from: CR
Repo: arika0093/Linqraft PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-11-25T12:08:35.836Z
Learning: Always perform a clean build to avoid stale generator caches; run: `dotnet clean && dotnet build --no-incremental`

Applied to files:

  • .github/workflows/test.yaml
🔇 Additional comments (4)
.github/workflows/test.yaml (1)

14-15: Environment variable consolidation aligns well with PR objectives.

Introducing DOTNET_VERSION as a centralized environment variable and replacing the hard-coded version list with a reference to it is a clean approach. This eliminates maintenance friction when the target version needs to be updated in the future.

Also applies to: 34-34

.devcontainer/devcontainer.json (1)

12-12: Devcontainer now aligned to .NET 10 only

Using "additionalVersions": "10.0" matches the repo’s move to .NET 10; just make sure the devcontainers dotnet feature currently provides a 10.0 install so container creation doesn’t break.

examples/Directory.Build.props (1)

3-3: Centralized example TFM on net10.0

Setting <TargetFramework>net10.0</TargetFramework> here is a good centralization and lines up with the repo’s single-TFM strategy; just ensure local/CI SDKs are new enough to understand net10.0.

tests/Directory.Build.props (1)

3-4: TFMS-based test targeting with net10.0 default looks solid

The conditional <TargetFrameworks> setup (TFMS override, net10.0 fallback) is a clean way to keep multi-targeting flexibility while standardizing on .NET 10; just confirm individual test projects aren’t redefining TargetFramework/TargetFrameworks in a conflicting way.

@arika0093 arika0093 merged commit 19c02fd into main Nov 27, 2025
4 checks passed
@arika0093 arika0093 deleted the chore/use-only-dotnet10 branch November 27, 2025 01:30
arika0093 added a commit that referenced this pull request Dec 1, 2025
* chore: update projects to use only .NET 10.0

* chore: update devcontainer to use only .NET 10.0

(cherry picked from commit 19c02fd)
arika0093 added a commit that referenced this pull request Dec 1, 2025
* chore: use .NET10 only (#165)

* chore: update projects to use only .NET 10.0

* chore: update devcontainer to use only .NET 10.0

(cherry picked from commit 19c02fd)

* Update GitHub repository link in README

(cherry picked from commit 27bc288)

* Fix badge links in README.md

(cherry picked from commit b0b98e4)

* Add Linqraft Playground web application (#166)

* Initial plan

* feat: add Linqraft Playground web application

- Create Blazor WebAssembly project for interactive Linqraft demo
- Add Monaco Editor for C# syntax highlighting
- Implement template selection sidebar with sample code
- Add file navigation pane
- Create query expression preview pane (readonly)
- Create DTO class preview pane (readonly)
- Add resizable pane layout
- Include 4 sample templates from examples
- Add GitHub Pages deployment workflow

Co-authored-by: arika0093 <4524647+arika0093@users.noreply.github.com>

* refactor: address review feedback

- Remove GitHub Actions workflow (to be prepared separately)
- Replace Bootstrap with Tailwind CSS custom utilities
- Break Home.razor into Sidebar, EditorPane, PreviewPane components
- Add JetBrains Mono font for Monaco editor
- Add .monaco-editor-container height fix
- Update code generation to be per template unit
- Update TemplateService with clearer documentation

Co-authored-by: arika0093 <4524647+arika0093@users.noreply.github.com>

* feat: integrate Roslyn and add collapse buttons

- Integrate Linqraft.Core with Roslyn for actual code generation
- Add collapse buttons to preview panes (▲/▼)
- Use Visual Studio theme for preview panes
- Remove HttpClient from services
- Use custom Tailwind CSS utilities (build-time generated CSS)
- Handle WebAssembly environment for metadata references

Co-authored-by: arika0093 <4524647+arika0093@users.noreply.github.com>

* fix: code generation now works with proper Roslyn compilation

- Add using directives and SelectExpr stub to templates for Roslyn analysis
- Default to file containing SelectExpr when template is selected
- Use dark theme for all editor panes
- Make collapse buttons less conspicuous
- Add IsHidden property to ProjectFile for internal stub files
- Use Basic.Reference.Assemblies.Net90 for Roslyn compilation

Co-authored-by: arika0093 <4524647+arika0093@users.noreply.github.com>

* feat: add debounce, settings dialog, and fix collapse behavior

- Add 300ms debounce for code generation after input stops
- Add settings dialog for LinqraftConfiguration with all options
- Set CommentOutput to None by default
- Fix collapse button behavior to preserve generated content
- Remove hardcoded file names from query conditions
- Add Settings button to sidebar

Co-authored-by: arika0093 <4524647+arika0093@users.noreply.github.com>

* fix: address code review feedback

- Fix CommentOutput default value fallback to None (0)
- Extract debounce delay to named constant DebounceDelayMs

Co-authored-by: arika0093 <4524647+arika0093@users.noreply.github.com>

* fix: properly parse multiple source files for code generation

- Parse each file into its own syntax tree for correct Roslyn compilation
- This fixes type resolution issues where all types became 'object'
- Add bracket pair colorization to Monaco editors
- DTO classes now show correct types (int, DateTime, string, List<T>, etc.)

Co-authored-by: arika0093 <4524647+arika0093@users.noreply.github.com>

* fix: cache semantic models to avoid redundant GetSemanticModel calls

Co-authored-by: arika0093 <4524647+arika0093@users.noreply.github.com>

* some fixes

* space fix

* feat: add home page and improve UX

- Rename Home.razor to Playground.razor at /playground route
- Create new Home.razor at / with intro to Linqraft and Playground link
- Move settings into sidebar as collapsible section like Templates/Files
- Make preview pane headers fully clickable to toggle collapse
- Remove resize cursor from dividers (visual only)
- Delete SettingsDialog.razor (no longer needed)
- Update navigation in MainLayout

Co-authored-by: arika0093 <4524647+arika0093@users.noreply.github.com>

* template update

* small fix

* use Tailwind.Hosting

* feat: add semantic syntax highlighting with Roslyn

- Create SemanticHighlightingService using Roslyn to extract tokens
- Add JavaScript for applying Monaco decorations via JSInterop
- Apply CSS styling matching Visual Studio dark theme colors
- Highlight class names (cyan), methods (yellow), properties (light blue)
- Apply highlighting to both editor and preview panes
- Debounce highlighting updates to 200ms

Co-authored-by: arika0093 <4524647+arika0093@users.noreply.github.com>

* fix: address code review feedback

- Fix array bounds check in getClassName JS function
- Replace System.Timers.Timer with CancellationTokenSource for debouncing
- Extract magic number 100ms to InitialHighlightDelayMs constant

Co-authored-by: arika0093 <4524647+arika0093@users.noreply.github.com>

* feat: improve semantic highlighting for generics and keywords

- Add highlighting for generic type arguments (e.g., Order in List<Order>)
- Add highlighting for contextual keywords (required, init)
- Add record declaration highlighting
- Handle nullable types and array types in generics
- Add CSS style for keyword highlighting
- Fixed ProcessNode to process TypeArgumentListSyntax

Co-authored-by: arika0093 <4524647+arika0093@users.noreply.github.com>

* feat: share CSharpCompilation between code generation and semantic highlighting

- Create SharedCompilationService for consistent compilation across services
- Include SelectExpr extension methods source (from ConstSourceCodes) for Roslyn recognition
- Add generated code to compilation for accurate highlighting
- Update CodeGenerationService to use shared compilation
- Update SemanticHighlightingService to use shared compilation
- Add IsExpressionPane parameter to PreviewPane for correct highlighting context

Co-authored-by: arika0093 <4524647+arika0093@users.noreply.github.com>

* superfix

* format

* feat: add TargetFramework to Linqraft.MinimumSample project

* test sdk deps update

* path changed

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: arika0093 <4524647+arika0093@users.noreply.github.com>
Co-authored-by: Arika Ishinami <delete0093@gmail.com>
(cherry picked from commit 663c4ce)

* chore: apply formatting

(cherry picked from commit 8e104be)

* wip

(cherry picked from commit 1a4a276)

* wip

(cherry picked from commit 32c9e82)

* Add LinqraftNestedDtoNamespace option for namespace-based child DTO naming (#168)

* Initial plan

* Add LinqraftNestedDtoNamespace configuration option

Co-authored-by: arika0093 <4524647+arika0093@users.noreply.github.com>

* option name renamed

* testcase merged

* option name changed and use new generate logic in playground

* Remove hash suffix from generated nested DTO class names and add configuration option

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: arika0093 <4524647+arika0093@users.noreply.github.com>
Co-authored-by: Arika Ishinami <delete0093@gmail.com>
(cherry picked from commit a6395aa)

* chore: apply formatting

(cherry picked from commit d11684c)

* style: enhance typography and spacing across components

(cherry picked from commit 7db5008)

* Refactor Playground Home page with component separation, Prism.js syntax highlighting, and vertical layout (#169)

* Initial plan

* Improve Playground Home page with rotating features, sticky tabs, code comparison, syntax highlighting, and NuGet icon

Co-authored-by: arika0093 <4524647+arika0093@users.noreply.github.com>

* Fix code review issues: accessibility, HttpClient usage, and error handling

Co-authored-by: arika0093 <4524647+arika0093@users.noreply.github.com>

* Fix extra closing brackets and use HttpRequestMessage for thread-safe API calls

Co-authored-by: arika0093 <4524647+arika0093@users.noreply.github.com>

* Improve timer handling with CancellationToken and proper disposal

Co-authored-by: arika0093 <4524647+arika0093@users.noreply.github.com>

* fix

* fix

* Refactor Home page into separate components with Prism.js syntax highlighting and lazy loading

Co-authored-by: arika0093 <4524647+arika0093@users.noreply.github.com>

* Fix Playground page by restoring service registration

Co-authored-by: arika0093 <4524647+arika0093@users.noreply.github.com>

* Fix code review issues: clarify auto-generated DTOs and fix Prism.js bugs

Co-authored-by: arika0093 <4524647+arika0093@users.noreply.github.com>

* Improve Prism.js regex handling for global flag

Co-authored-by: arika0093 <4524647+arika0093@users.noreply.github.com>

* wip

* small fix

* style updated

* wip

* Update Key Features section: replace "Production-Ready Performance" with "Escape Anytime" and revise description for clarity

* smallfix

* Add GitHub Actions workflow for deploying to GitHub Pages and update project dependencies

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: arika0093 <4524647+arika0093@users.noreply.github.com>
Co-authored-by: Arika Ishinami <delete0093@gmail.com>
(cherry picked from commit f904a31)

* chore: apply formatting

(cherry picked from commit bf330e2)

* some fixed

(cherry picked from commit a7a8ce6)

* update

(cherry picked from commit eb09770)

* fix: downgrade .NET version to 9.0 in playground

because PublishSPAforGitHubPages.Build is not support .NET 10 yet (maybe...)

(cherry picked from commit 498dfe9)

* Revert "fix: downgrade .NET version to 9.0 in playground"

This reverts commit 498dfe9.

(cherry picked from commit 42609f6)

* fix: update links to use relative paths in FaqSection, HeroSection, and MainLayout

(cherry picked from commit 7724e05)

* add bg to hero section

(cherry picked from commit 9caadf1)

* website visual update

(cherry picked from commit baa4b38)

* style updated

(cherry picked from commit 24b1c0d)

* refactor: improve layout and styling in HeroSection, EditorPane, Sidebar, and Playground components; update package references

(cherry picked from commit 9e459a5)

* fix

(cherry picked from commit 211f7b5)

* feat: implement C# syntax highlighting and update layout styles across components

(cherry picked from commit 68784a0)

* fix: update property names in order DTO generation for clarity

(cherry picked from commit 86f4fcc)

* fix: update Tailwind CDN usage to conditional rendering based on build configuration

(cherry picked from commit 60c337f)

* feat: enhance C# syntax highlighting to include property and field declarations

(cherry picked from commit 6155e8f)

* feat: update KeyFeaturesSection layout and styles for improved readability and consistency

(cherry picked from commit 1b5c17d)

* feat: enhance C# syntax highlighting to differentiate between type and property declarations

(cherry picked from commit b10a002)

* feat: implement collapsible editor pane and sidebar for improved UI/UX

(cherry picked from commit 61b249e)

* feat: add links to web page and online playground in README; improve layout in EditorPane and PreviewPane

(cherry picked from commit 115ec4a)

* feat: simplify Playground layout by removing unused CSS classes and improving responsiveness

(cherry picked from commit ebe2a02)

* feat: Add Min Repro template and URL sharing for issue reporting (#174)

* Initial plan

* Initial plan for issue reporting template

Co-authored-by: arika0093 <4524647+arika0093@users.noreply.github.com>

* feat: Add Min Repro template and URL sharing for issue reporting

Co-authored-by: arika0093 <4524647+arika0093@users.noreply.github.com>

* feat: Enhance Min Repro template with additional sample classes for better issue reproduction

* feat: Refactor UrlStateService to streamline navigation manager usage and improve code readability

* feat: Update Sidebar buttons and styles for improved UI consistency

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: arika0093 <4524647+arika0093@users.noreply.github.com>
Co-authored-by: Arika Ishinami <delete0093@gmail.com>
(cherry picked from commit a57f41a)

* Fix documentation comment extraction for nested properties and Select expressions (#175)

close #172

* Initial plan

* Fix documentation extraction for nested properties and Select expressions

Co-authored-by: arika0093 <4524647+arika0093@users.noreply.github.com>

* Improve documentation comments in DtoProperty.cs

Co-authored-by: arika0093 <4524647+arika0093@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: arika0093 <4524647+arika0093@users.noreply.github.com>
(cherry picked from commit cd4a277)

* chore: apply formatting

(cherry picked from commit a942995)

* feat: update Sidebar UI and enhance Tailwind CSS styles for improved aesthetics

(cherry picked from commit fe339ca)

* Integrate LQRS004 ternary null check transformation into LQRS002/LQRS003 (#171)

* Initial plan

* Initial plan for integrating LQRS004 into LQRS002/LQRS003

Co-authored-by: arika0093 <4524647+arika0093@users.noreply.github.com>

* Integrate LQRS004 transformation into LQRS002/LQRS003 code fixes

Co-authored-by: arika0093 <4524647+arika0093@users.noreply.github.com>

* Add support for inverted null check conditions in ternary simplification

Co-authored-by: arika0093 <4524647+arika0093@users.noreply.github.com>

* Update LQRS003 options: remove RootOnly, add Struct option

Co-authored-by: arika0093 <4524647+arika0093@users.noreply.github.com>

* Fix terminology: update 'struct' to 'strict' in LQRS003 documentation and related code fix provider

* Re-enable LQRS004 and remove ternary simplification from Predefined option

Co-authored-by: arika0093 <4524647+arika0093@users.noreply.github.com>

* Update LQRS004 documentation to reflect relationship with LQRS002/LQRS003

Co-authored-by: arika0093 <4524647+arika0093@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: arika0093 <4524647+arika0093@users.noreply.github.com>
Co-authored-by: Arika Ishinami <delete0093@gmail.com>
(cherry picked from commit f551f00)

* chore: apply formatting

(cherry picked from commit da9aa16)

* fix: update PackageProjectUrl to point to the correct GitHub Pages URL

(cherry picked from commit 360e750)

* refactor: rename DTO classes for clarity and improve null handling in queries

(cherry picked from commit 5336f54)

---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: arika0093 <4524647+arika0093@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
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.

2 participants