fix(build): gate DLL deploys to Release and make them deterministic - #164
Merged
Conversation
Any Debug build — including a plain `dotnet test` run — silently redeployed a Debug DLL into the Unity package because CopyToUnity had no Configuration gate. Mirror the analyzer's Release-only condition. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LsVLAxv4eia9yv4TjSaP3G
Enable Deterministic + ContinuousIntegrationBuild for both shipped projects so identical sources produce byte-identical DLLs: PathMap strips the local checkout path (the analyzer DLL embedded the absolute pdb path with the user name), and InformationalVersion no longer bakes in the git SHA of whatever tree happened to build it. Redeploy both package DLLs rebuilt with these settings; a repeated clean Release build now reproduces them bit-for-bit. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LsVLAxv4eia9yv4TjSaP3G
VPDPersonal
added a commit
that referenced
this pull request
Aug 6, 2026
Per the repo owner: an intermediate 1.0.0-rc.6 ships first because a lot of manual testing is still ahead. The checklist tail is now two stages - rc.6 (merge audit PRs #163/#164+, bump to rc.6, [1.0.0-rc.6] CHANGELOG section, v1.0.0-rc.6 tag with release.yml publishing upm-preview, clean install check, full manual QA pass) and 1.0.0 (only after all QA findings are closed: bump, [Unreleased] -> [1.0.0], v1.0.0 tag + GitHub Release, upm branch update, migration note verified). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LsVLAxv4eia9yv4TjSaP3G
VPDPersonal
marked this pull request as ready for review
August 6, 2026 18:46
This was referenced Aug 6, 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.
Fixes two release-readiness audit findings around the shipped Roslyn DLLs.
Summary
CopyToUnityin the generators'Directory.Build.targetsnow runs only for Release, mirroring the analyzers' gate — before, any Debug build (including a plaindotnet test) silently redeployed a Debug DLL into the Unity package.Deterministic+ContinuousIntegrationBuild, source revision kept out ofInformationalVersion): no absolute local checkout paths in the binaries (the analyzer DLL embedded the/Users/<name>/…/obj/Release/….pdbpath) and no git SHA of whatever tree happened to build them.Notes for review
dotnet testrun in a clean tree leaves the package DLLs untouched (git statusstays clean); tests green — generators 38/38, analyzers 47/47.dotnet build -c Release --no-incrementalreproduces both DLLs bit-for-bit (md5 match), including the ILRepack-merged generator DLL;strings <dll> | grep -i usersis now empty for both.🇷🇺 Описание на русском
Закрывает две находки аудита релизной готовности, касающиеся поставляемых Roslyn-DLL.
Кратко
CopyToUnityвDirectory.Build.targetsгенераторов теперь срабатывает только в Release — зеркально гейту анализаторов; раньше любая Debug-сборка (включая обычныйdotnet test) молча заливала Debug-DLL в Unity-пакет.Deterministic+ContinuousIntegrationBuild, ревизия исходников убрана изInformationalVersion): в бинарниках больше нет абсолютных локальных путей (analyzer-DLL вшивала путь/Users/<имя>/…/obj/Release/….pdb) и git-SHA дерева сборки.Заметки для ревью
dotnet testв чистом дереве не трогает пакетные DLL (git statusостаётся чистым); тесты зелёные — генераторы 38/38, анализаторы 47/47.dotnet build -c Release --no-incrementalвоспроизводит обе DLL байт-в-байт (md5 совпадает), включая merged-DLL генератора после ILRepack;strings <dll> | grep -i usersтеперь пуст для обеих.🤖 Generated with Claude Code
https://claude.ai/code/session_01LsVLAxv4eia9yv4TjSaP3G