From 2a5e46c28738a0c4b1c7df5fce267dd0fe16295c Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 12 May 2026 23:34:01 +0000 Subject: [PATCH] ci: split build/pack with --verbosity normal in mass-release MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit api-dto keeps failing with NU5026 ("DLL not found") even after the PR #14 fix that added the Dto.Shared.projitems Import. The previous pack step ran `dotnet pack` without --no-build, relying on its implicit build phase, which prints only "Restored..." with no build details before failing. That makes it impossible to tell whether: - the Import is not adding the Compile items at all (build should then fail with CS2008 "no inputs"), or - the build succeeds but emits no DLL, or - the build is being skipped entirely. Refactor the step to run `dotnet build --verbosity normal` first, then `dotnet pack --no-build`. With verbose output we will see exactly which Compile items MSBuild evaluates for Api.Dto and whether csc.exe runs at all. Applied symmetrically to the mcp branch of the loop. No functional change for the other 23 packages — they pass through build and pack normally with the same configuration. https://claude.ai/code/session_015jxScBEvdKkRwGvJTgK5Py --- .github/workflows/mass-release.yml | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/.github/workflows/mass-release.yml b/.github/workflows/mass-release.yml index 06977bd..4ac8d94 100644 --- a/.github/workflows/mass-release.yml +++ b/.github/workflows/mass-release.yml @@ -93,18 +93,41 @@ jobs: set -euo pipefail mkdir -p ./artifacts + # Build and pack each project in two explicit steps with --verbosity + # normal, so any build error (missing source, broken Import, etc.) is + # surfaced in the logs instead of being swallowed by `dotnet pack`'s + # implicit-build behavior. + # # Out-of-solution projects (Cosmos, DocumentDB, etc.) need their own - # restore/build, so we deliberately do NOT pass --no-build here. + # restore + build here. for pkg in $(jq -r 'keys[]' "$MAPPING"); do project=$(jq -r --arg p "$pkg" '.[$p]' "$MAPPING") + echo "::group::Build $pkg ($project)" + dotnet build "$project" \ + --configuration "$CONFIGURATION" \ + --verbosity normal + echo "::endgroup::" + echo "::group::Pack $pkg ($project)" - dotnet pack "$project" --configuration "$CONFIGURATION" --output ./artifacts + dotnet pack "$project" \ + --configuration "$CONFIGURATION" \ + --no-build \ + --output ./artifacts echo "::endgroup::" done if [ "${{ github.event.inputs.include_mcp }}" = "true" ]; then + echo "::group::Build mcp ($MCP_PROJECT)" + dotnet build "$MCP_PROJECT" \ + --configuration "$CONFIGURATION" \ + --verbosity normal + echo "::endgroup::" + echo "::group::Pack mcp ($MCP_PROJECT)" - dotnet pack "$MCP_PROJECT" --configuration "$CONFIGURATION" --output ./artifacts + dotnet pack "$MCP_PROJECT" \ + --configuration "$CONFIGURATION" \ + --no-build \ + --output ./artifacts echo "::endgroup::" fi