-
Notifications
You must be signed in to change notification settings - Fork 0
Fix build actions: Update .NET version from 10 to 9 across all workflows #6
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 our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
…ows and global.json Co-authored-by: sbroenne <3026464+sbroenne@users.noreply.github.com>
|
@copilot please check the output of the last action run and make sure we have fixed the reason why they failed |
I've analyzed the failing workflows from the feature/nuget branch. Both build-cli.yml and build-mcp-server.yml were failing due to .NET SDK version mismatch: Root Cause: Projects target net9.0, but global.json required .NET 10.0 preview which isn't available in CI. Fix Applied (commit c9b47de):
Verification:
The workflows should now pass when they run for this PR branch. No workflows have triggered yet for copilot/fix-build-actions-and-tests branch since it's a new PR. |
* Refactor installation and configuration instructions for ExcelMcp CLI and MCP Server - Updated README.md to streamline installation steps and clarify configuration for GitHub Copilot and Claude Desktop. - Removed the GitHub Copilot Integration guide from docs/COPILOT.md and consolidated relevant information into README.md. - Enhanced server.json management instructions in DEVELOPMENT.md to ensure synchronization with MCP Server changes. - Revised installation guide in INSTALLATION.md to focus on CLI tool installation and provide clear system requirements. - Updated NuGet trusted publishing documentation in NUGET_TRUSTED_PUBLISHING.md to reflect repository name changes and added API key method. - Adjusted versioning in project files for ExcelMcp CLI and Core to 1.0.0. - Modified MCP Server configuration in server.json to align with new schema and package structure. - Cleaned up unnecessary sections in MCP Server README.md and improved clarity on command usage. * Refactor Core to separate data layer from presentation (CLI/MCP) - Complete with Comprehensive Test Coverage (#5) * Checkpoint from VS Code for coding agent session * Initial commit: Add XML documentation and update to .NET 9.0 Co-authored-by: sbroenne <3026464+sbroenne@users.noreply.github.com> * Refactor Core FileCommands to return Result objects, remove Spectre.Console dependency Co-authored-by: sbroenne <3026464+sbroenne@users.noreply.github.com> * Create Core.Tests project and reorganize tests by layer (Core vs CLI) Co-authored-by: sbroenne <3026464+sbroenne@users.noreply.github.com> * Add comprehensive refactoring summary documentation Co-authored-by: sbroenne <3026464+sbroenne@users.noreply.github.com> * Final summary: FileCommands refactoring complete with proof of concept Co-authored-by: sbroenne <3026464+sbroenne@users.noreply.github.com> * Refactor SetupCommands: Core returns VbaTrustResult, CLI formats output Co-authored-by: sbroenne <3026464+sbroenne@users.noreply.github.com> * Refactor CellCommands: Core returns CellValueResult/OperationResult, CLI formats Co-authored-by: sbroenne <3026464+sbroenne@users.noreply.github.com> * Refactor ParameterCommands: Core returns ParameterListResult/ParameterValueResult, CLI formats Co-authored-by: sbroenne <3026464+sbroenne@users.noreply.github.com> * Add refactoring status documentation - 67% complete (4/6 commands done) Co-authored-by: sbroenne <3026464+sbroenne@users.noreply.github.com> * Refactor SheetCommands Core: returns WorksheetListResult/WorksheetDataResult/OperationResult Co-authored-by: sbroenne <3026464+sbroenne@users.noreply.github.com> * Complete SheetCommands: CLI wrapper and test updates - builds successfully Co-authored-by: sbroenne <3026464+sbroenne@users.noreply.github.com> * Update IScriptCommands interface and add final status documentation - 83% complete Co-authored-by: sbroenne <3026464+sbroenne@users.noreply.github.com> * Refactor ScriptCommands Core: returns ScriptListResult/OperationResult, zero Spectre.Console Co-authored-by: sbroenne <3026464+sbroenne@users.noreply.github.com> * Refactor PowerQueryCommands Core: returns Result objects, zero Spectre.Console - 100% Core complete! Co-authored-by: sbroenne <3026464+sbroenne@users.noreply.github.com> * Create CLI wrappers for ScriptCommands and PowerQueryCommands - formatting Core results Co-authored-by: sbroenne <3026464+sbroenne@users.noreply.github.com> * Complete refactoring: Update MCP Server, remove Spectre.Console from Core - 100% Done! Co-authored-by: sbroenne <3026464+sbroenne@users.noreply.github.com> * Add comprehensive test coverage documentation and status analysis Co-authored-by: sbroenne <3026464+sbroenne@users.noreply.github.com> * Add 15 unit tests for Result types - all passing without Excel Co-authored-by: sbroenne <3026464+sbroenne@users.noreply.github.com> * Add 14 unit tests for MCP Server JSON serialization - 46 total unit tests passing Co-authored-by: sbroenne <3026464+sbroenne@users.noreply.github.com> * Move integration tests to Core.Tests - proper layer organization (48 Core, 8 CLI, 30 MCP) Co-authored-by: sbroenne <3026464+sbroenne@users.noreply.github.com> * Add missing Core integration tests: PowerQuery, Sheet, Script, IntegrationWorkflows (30+ tests) Co-authored-by: sbroenne <3026464+sbroenne@users.noreply.github.com> --------- Co-authored-by: Stefan Broenner <stefan.broenner@microsoft.comm> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: sbroenne <3026464+sbroenne@users.noreply.github.com> * Add Excel automation tools for MCP server - Implemented ExcelTools class for comprehensive Excel file operations including creation, validation, and existence checks. - Introduced ExcelPowerQuery for managing Power Query M code and data connections. - Developed ExcelWorksheet for CRUD operations on worksheets and cell ranges. - Created ExcelParameter for managing named ranges as parameters. - Added ExcelCell for individual cell operations including getting and setting values and formulas. - Implemented ExcelVba for managing and executing VBA scripts in macro-enabled Excel files. - Established ExcelToolsBase as a common base class for shared functionality across all Excel tools. - Enhanced error handling and standardized JSON responses across all tools. * Add integration, round trip, and unit tests for Excel MCP Server functionality - Implemented integration tests for Excel file and worksheet operations in ExcelMcpServerTests. - Added round trip tests for Power Query and VBA workflows in McpServerRoundTripTests. - Created unit tests for JSON serialization of result objects in ResultSerializationTests. - Ensured comprehensive coverage of success and error scenarios across all tests. - Included cleanup logic to manage temporary files created during tests. * Enhance CLI Command Validation and Error Handling - Updated ExcelVbaTool and ExcelWorksheetTool to include data annotations for parameter validation, ensuring required fields and valid file extensions. - Refactored action handling in both tools to improve clarity and maintainability. - Added comprehensive unit tests for various CLI commands, focusing on argument validation and error exit codes. - Introduced integration tests for ParameterCommands, CellCommands, PowerQueryCommands, ScriptCommands, and SheetCommands to verify CLI-specific behavior and error handling. - Ensured all tests validate expected exit codes for missing or invalid arguments, enhancing overall robustness of the CLI. * Refactor ExcelMcp.McpServer.Tests: Update parameter names for consistency, add detailed error message tests, and enhance directory handling in Excel file operations - Changed parameter names from `filePath` to `excelPath` in multiple test cases for clarity. - Introduced `DetailedErrorMessageTests` to verify enhanced error messages for various Excel operations. - Added `ExcelFileDirectoryTests` to ensure file creation in non-existent directories works as expected. - Created `ExcelFileMcpErrorReproTests` to reproduce specific MCP error scenarios. - Implemented `ExcelFileToolErrorTests` to diagnose issues with the excel_file tool. - Added `McpParameterBindingTests` to test parameter binding in the MCP framework. - Developed `PowerQueryComErrorTests` to diagnose COM errors in Power Query operations. * Enhance test organization and management - Standardized test class naming conventions by adding layer prefixes (Cli, Core, Mcp) to avoid duplicate names across projects. - Implemented a new trait standardization for all tests, ensuring complete trait coverage for better filtering and organization. - Added a new method to disable VBA project access trust in SetupCommands. - Introduced WithVbaTrustManagement method in ScriptCommands to manage VBA trust automatically during operations. - Updated existing tests to reflect new naming conventions and added missing traits for MCP Server tests. - Removed obsolete ScriptCommandsTests class to streamline test suite. - Revised documentation to reflect changes in test organization and filtering best practices. * Refactor MCP Server test to improve execution speed and reliability - Directly use the built executable for faster startup instead of `dotnet run`. - Implement fallback to DLL execution if the executable is not found. - Enhance JSON response handling for various calls to ensure robustness against non-JSON responses. - Update data verification steps to focus on protocol correctness rather than exact content. - Improve logging for better clarity on test steps and outcomes. - Clean up file handling to ensure proper resource management. * Remove obsolete test for handling invalid operations in ExcelWorksheet * Remove refactoring summary documentation for MCP Server architecture * Fix target framework version in server configuration from net10.0 to net9.0 * Fix build actions: Update .NET version from 10 to 9 across all workflows (#6) * Initial plan * Fix build actions: Update .NET version from 10 to 9 across all workflows and global.json Co-authored-by: sbroenne <3026464+sbroenne@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: sbroenne <3026464+sbroenne@users.noreply.github.com> --------- Co-authored-by: Stefan Broenner <stefan.broenner@microsoft.comm> Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: sbroenne <3026464+sbroenne@users.noreply.github.com>
…e fixes
PROBLEM:
1. All 18 PivotTable tests shared single _testExcelFile causing:
- File locks from xUnit parallel execution -> hanging tests
- Test pollution from shared state
- Order dependency and unpredictable failures
2. Excel COM numeric properties (Orientation, Position, Function) return double
- Implicit int conversion failed at runtime
- RefreshDate property needs safe DateTime/double OLE handling
SOLUTION:
Tests - Unique File Isolation Pattern:
- Each test creates isolated file: CreateTestFileWithDataAsync("TestName.xlsx")
- File naming: Descriptive names matching test purpose
- Scoped batch disposal for file reopening scenarios
- Sample data expanded: 2 rows to 6 rows for comprehensive testing
- Pattern: var testFile = await CreateTestFileWithDataAsync("Test.xlsx");
Excel COM - Explicit Type Conversion:
- Convert.ToInt32() for all numeric properties (Orientation, Position, Function)
- GetRefreshDateSafe() helper for DateTime/double OLE date handling
- Updated both PivotTableCommands.Fields.cs and .Lifecycle.cs
VERIFICATION:
- Build: Clean (0 errors, 0 warnings)
- Tests verified individually:
- CreateFromRange: PASSED (11s)
- List: PASSED (13s)
- GetInfo: PASSED (14s)
- File locks: ZERO
- Hanging: ZERO
- Test isolation: CONFIRMED
DOCUMENTATION:
Updated .github/instructions/:
- testing-strategy.instructions.md: Added Test File Isolation section (~94 lines)
- Anti-pattern examples with catastrophic consequences
- Correct pattern with benefits
- Key Principle #6: Unique file per test
- excel-com-interop.instructions.md: Added section 5 - Numeric Property Type Conversions
- ALL numeric properties return double, not int
- Common properties affected (Orientation, Position, Function, Row, Column)
- Date property handling (DateTime vs double OLE)
- Why: Excel COM uses VARIANT types internally
Tests affected: All 18 PivotTable integration tests
Files changed: 5 (2 instructions, 2 Core commands, 1 test file)
Anti-pattern: ELIMINATED
Type safety: IMPROVED
Implements feature #8 from Issue #219: SetGrandTotals operation for independent row/column grand totals control in PivotTables. FEATURES: - Row grand totals control: Show/hide bottom summary row - Column grand totals control: Show/hide right summary column - Independent control: Configure row and column separately - Full support: Both regular and OLAP PivotTables IMPLEMENTATION: - IPivotTableFieldStrategy: SetGrandTotals interface method using pivot.RowGrand/ColumnGrand properties - RegularPivotTableFieldStrategy: Direct COM property assignment - OlapPivotTableFieldStrategy: Same COM properties (full OLAP support) - PivotTableCommands.GrandTotals.cs: Routes to appropriate strategy via factory - PivotTableAction: SetGrandTotals enum value added - ExcelPivotTableTool: MCP Server integration with showRowGrandTotals/showColumnGrandTotals parameters TESTS: - 6 new tests covering all show/hide combinations - Test scenarios: show both, hide both, show row only, show column only, multiple sequential changes, round-trip persistence - All tests passing (58 total: 52 existing + 6 new) VERIFICATION: - Build: 0 warnings, 0 errors - Tests: 58/58 passing (all PivotTable tests) - Pre-commit: All checks passed (COM leaks, coverage, naming, switch completeness, success flag, MCP smoke test) CLOSES #219: All required features complete - Priority 1 (Tasks 1-4 from commits 2417b84, 3cd4a15, c93e44b, 4826ca5): Date grouping, numeric grouping, calculated fields, layout & subtotals ✅ - Feature #8 (Task 5 - this commit): Grand totals control ✅ - Features #6-7 not needed per requirements (OLAP drill, connection management)
* feat(pivottable): Add date grouping by Days/Months/Quarters/Years (Task 1 of Issue #219) Implements GroupByDate operation for PivotTable fields with support for all 4 date intervals. Excel automatically creates hierarchical groupings (e.g., Months + Years) for proper time-based analysis. CRITICAL DISCOVERY - NumberFormat Requirement: - Source data MUST be formatted with date NumberFormat BEFORE creating PivotTable - Without proper formatting, dates stored as serial numbers (e.g., 45672) with 'Standard' format - Excel silently fails to group plain numbers - grouping requires date-formatted data - Solution: Apply NumberFormat = 'm/d/yyyy' to source range before PivotTable creation Implementation: - Added DateGroupingInterval enum (Days, Months, Quarters, Years) - Implemented GroupByDate in RegularPivotTableFieldStrategy using Range.Group() - Uses PivotField.DataRange.Cells[1,1] for single cell grouping - Periods array: [Seconds, Minutes, Hours, Days, Months, Quarters, Years] - Hierarchical grouping: Months/Quarters automatically include Years - MCP Server: Added GroupByDate action to ExcelPivotTableTool with dateGroupingInterval parameter Infrastructure Changes: - Added xUnit logging support via MartinCostello.Logging.XUnit package - Added IExcelBatch.Logger property with proper STA thread affinity - Logger passed through batch operations for diagnostics Test Coverage (4 new tests, all passing): - GroupByDate_DaysInterval_CreatesDailyGroups - GroupByDate_MonthsInterval_CreatesMonthlyGroups - GroupByDate_QuartersInterval_CreatesQuarterlyGroups - GroupByDate_YearsInterval_CreatesYearlyGroups All 38 PivotTable tests passing. Technical Details: - Date serial: 45672 (Double) = 2025-01-15 (days since 1900-01-01) - DataRange for Row/Column fields = 'Items in the field' - Group() called on single cell, not entire range - Error logging preserved with #pragma CA1848 suppression Documentation: - XML docs on interface and implementation with NumberFormat requirement - Code examples showing proper date formatting Related: #219 (Task 1 complete) * feat(pivottable): Add numeric grouping + remove misleading Async naming (Task 2 of Issue #219) Implements GroupByNumeric operation for numeric field range grouping. Creates groups like 0-100, 100-200, 200-300 for age groups, price ranges, score bands. Implementation: - Uses Range.Group() with Start, End, By parameters - By parameter specifies interval size (e.g., 100) - Start/End nullable → null = auto-detect field min/max - Periods parameter ignored for numeric fields (only for dates) - Type casting required: double? → object for COM interop - VB.NET compatibility: Renamed 'end' parameter to 'endValue' BREAKING CHANGE (Code Quality Improvement): - Removed misleading 'Async' suffix from 21 synchronous methods in ExcelPivotTableTool - Methods are synchronous (no async/await/Task) but were incorrectly named - User observation: 'why do we have Async - everything is Sync!' (correct!) - Affected: List, Read, Create*, Delete, Refresh, *Field, GroupBy* methods - Impact: Code now accurately reflects synchronous implementation - No API change: Method names were internal/private Documentation Updates: - Rewrote mcp-server-guide.instructions.md to remove all Async references - Clarified that all action methods are synchronous - Tool signatures are 'async Task<string>' only for MCP SDK requirements - Updated all code examples to show synchronous patterns Test Coverage (3 new tests, all passing): - GroupByNumeric_AutoRange_CreatesNumericGroups (interval=100, auto min/max) - GroupByNumeric_CustomRange_CreatesNumericGroups (0-1000, interval=200) - GroupByNumeric_SmallInterval_CreatesFineGrainedGroups (interval=50) - Fixed aggregation function: Use AggregationFunction.Count for text fields Technical Details: - Type casting: start.HasValue ? (object)start.Value : true - COM interop: Excel expects object type for Group() parameters - VB.NET interop: 'end' keyword conflict → renamed to 'endValue' - OLAP: Not supported (returns clear error with Power Pivot guidance) All 41 PivotTable tests passing (38 existing + 3 new). Related: #219 (Task 2 complete) * feat(pivottable): Add calculated fields with formulas Implements Task 3 of Issue #219: CreateCalculatedField operation FEATURES: - Regular PivotTables: Full support via CalculatedFields.Add() API - OLAP PivotTables: NotSupported (use DAX measures instead) - Formula syntax: =FieldName1 operator FieldName2 (e.g., =Revenue-Cost) - Operators: + - * / ^ () IMPLEMENTATION: - IPivotTableFieldStrategy: CreateCalculatedField interface method - RegularPivotTableFieldStrategy: Uses pivot.CalculatedFields().Add() - OlapPivotTableFieldStrategy: Returns NotSupported with DAX workflow hint - PivotTableCommands.CalculatedFields.cs: Routes to correct strategy - PivotTableAction.CreateCalculatedField: New enum value - ExcelPivotTableTool: MCP Server integration with formula parameter - PivotFieldResult: Added Formula property for result tracking TESTS: - 4 new regular PivotTable tests (multiplication, subtraction, complex, addition) - 1 new OLAP test using DataModelTestsFixture - Tests cover: formulas with different operators and parentheses - OLAP test verifies NotSupported behavior with proper error messages COMPATIBILITY: - All 41 existing PivotTable tests passing (no regressions) - Total: 46 passing tests (41 existing + 5 new) Closes Task 3 of #219 * feat(pivottable): Add layout and subtotals control (Task 4 of Issue #219) Implements Task 4 of Issue #219: SetLayout and SetSubtotals operations FEATURES: - Layout control: Compact (default), Tabular, Outline forms - Subtotals control: Show/hide automatic subtotals per field - Full support for both regular and OLAP PivotTables LAYOUT FORMS: - Compact (0): All row fields in single column with indentation - Tabular (1): Each field in separate column, subtotals at bottom - Outline (2): Each field in separate column, subtotals at top IMPLEMENTATION: - IPivotTableFieldStrategy: SetLayout and SetSubtotals interface methods - RegularPivotTableFieldStrategy: Uses RowAxisLayout() and field.Subtotals[1] - OlapPivotTableFieldStrategy: Full support for both operations - PivotTableCommands.Layout.cs: Routes to correct strategy - PivotTableCommands.Subtotals.cs: Routes to correct strategy - PivotTableAction: SetLayout and SetSubtotals enum values - ExcelPivotTableTool: MCP Server integration with layout and subtotalsVisible parameters TESTS: - 6 new tests covering all layout forms and subtotals scenarios - Tests for both regular and OLAP PivotTables - Round-trip verification tests COMPATIBILITY: - All 46 existing PivotTable tests passing (no regressions) - Total: 52 passing tests (46 existing + 6 new) CLOSES #219: All 4 tasks complete - Task 1: Date grouping (committed 52d1a6d) - Task 2: Numeric grouping (committed 2d58a45) - Task 3: Calculated fields (committed 6b6d683) - Task 4: Layout & Subtotals (this commit) Issue #219 complete - PivotTable automation fully expanded * feat(pivottable): Add grand totals control (Task 5 of Issue #219) Implements feature #8 from Issue #219: SetGrandTotals operation for independent row/column grand totals control in PivotTables. FEATURES: - Row grand totals control: Show/hide bottom summary row - Column grand totals control: Show/hide right summary column - Independent control: Configure row and column separately - Full support: Both regular and OLAP PivotTables IMPLEMENTATION: - IPivotTableFieldStrategy: SetGrandTotals interface method using pivot.RowGrand/ColumnGrand properties - RegularPivotTableFieldStrategy: Direct COM property assignment - OlapPivotTableFieldStrategy: Same COM properties (full OLAP support) - PivotTableCommands.GrandTotals.cs: Routes to appropriate strategy via factory - PivotTableAction: SetGrandTotals enum value added - ExcelPivotTableTool: MCP Server integration with showRowGrandTotals/showColumnGrandTotals parameters TESTS: - 6 new tests covering all show/hide combinations - Test scenarios: show both, hide both, show row only, show column only, multiple sequential changes, round-trip persistence - All tests passing (58 total: 52 existing + 6 new) VERIFICATION: - Build: 0 warnings, 0 errors - Tests: 58/58 passing (all PivotTable tests) - Pre-commit: All checks passed (COM leaks, coverage, naming, switch completeness, success flag, MCP smoke test) CLOSES #219: All required features complete - Priority 1 (Tasks 1-4 from commits 2417b84, 3cd4a15, c93e44b, 4826ca5): Date grouping, numeric grouping, calculated fields, layout & subtotals ✅ - Feature #8 (Task 5 - this commit): Grand totals control ✅ - Features #6-7 not needed per requirements (OLAP drill, connection management) * docs: Update operation counts and shorten release notes for Issue #219 - Updated PivotTable actions: 20 → 21 (added SetGrandTotals operation) - Updated total operations: 163 → 164, total actions: 155 → 156 - Added CHANGELOG entry with Task 5 features (grand totals, grouping, calculated fields, layout/subtotals) - Shortened release workflow notes ~70% to reduce redundancy with main README - Files updated: README.md, vscode-extension/README.md, gh-pages/index.md, ExcelMcp.McpServer/README.md, CHANGELOG.md, release-mcp-server.yml * Merge remote-tracking branch 'origin/main' into feature/pivottable-expansion-219
Problem
The CI/CD builds were failing due to a .NET SDK version mismatch:
.csproj) target net9.0global.jsonrequired .NET 10.0 preview (10.0.100-rc.1.25451.107)This caused all build workflows to fail with SDK version not found errors.
Solution
Updated all configurations to consistently use .NET 9.0, which is the actual target framework of all projects and is widely available in CI environments.
Changes Made
10.0.100-rc.1to9.0.306dotnet-versionfrom10.0.xto9.0.x:build-cli.ymlbuild-mcp-server.ymlcodeql.ymlpublish-nuget.ymlrelease-cli.ymlrelease-mcp-server.ymlnet10.0tonet9.0in build verification scriptsVerification
✅ Build successful with 0 warnings, 0 errors
✅ All unit tests passing: 52/52 tests (Core: 15, CLI: 23, MCP Server: 14)
✅ No Excel required tests were run to verify CI compatibility
Note
.NET 10 was previously specified for the
dnxtool but is not required for the build process. All projects target and build against .NET 9.0.Original prompt
the build actions are failing. please fix them. please also run tests - but only the ones that do not require Excel.
[Chronological Review: The conversation began with the user requesting a check on the tests in a specific directory, suspecting duplication in the test files. The user then asked to run a specific test file, identified issues with duplicate names across different modules, and reported warnings related to test case filters. The user requested updates to instructions and to investigate and fix failing tests. The conversation shifted to discussing the structure of tests, particularly the relationship between integration tests and round trip tests. The user clarified that the more comprehensive tests should be in the round trip category. The user then requested to read and write files directly instead of using PowerShell commands, followed by a request to fix failing tests and a note that working round trip tests exist in the core module. The user asked to continue iterating on the tests, fix a specific test, remove another test, and finally address failing build actions while running tests that do not require Excel.][Intent Mapping:
[Technical Inventory:
[Code Archaeology:
[Progress Assessment:
[Context Validation: All critical information for continuation is captured, including user requests for test checks, fixes, and updates.]
[Recent Commands Analysis:
1. Conversation Overview: - Primary Objectives: User aimed to check for test duplications, run specific tests, address issues with test naming and filtering, update documentation, and fix failing tests and build actions. - Session Context: The conversation flowed from identifying test issues to discussing test structures and ultimately addressing build failures and test execution. - User Intent Evolution: The user shifted from checking tests to actively requesting fixes and clarifications on test organization and execution.- Technical Foundation:
- .NET Testing Framework: Used for executing and managing tests.
- Pow...
Created from VS Code via the GitHub Pull Request extension.
💬 Share your feedback on Copilot coding agent for the chance to win a $200 gift card! Click here to start the survey.