Pre-submission Checklist
Problem Statement
Modern .NET (since the .NET 8 SDK) includes Source Link. The effect is that- when debugging a dump that contains frames from a given DLL or package, or when performing 'Peek Definition' or 'Go To Definition', instead of decompiling, the proper corresponding source files are automatically fetched by a compatible IDE. This makes build-time and debugging work considerably easier.
Hexa.NET.ImGui isn't Source Link enabled. This in itself is not a problem, but trying to 'Go To Definition' for any overload generally is far too slow to be usable in Visual Studio 2026. I need the repo open somewhere if I wanna quickly check what an overload precisely does, which does slow things down on occasion.
Source Link goes hand in hand with deterministic builds, which basically just attest that the build was in fact generated from the sources it claims to be. This is quite painless to enable on CI.
Another topic is that no symbols seem to be published on NuGet. It would be helpful to do so, since only minimal changes should be required to .csproj files to enable it.
NuGet Package Explorer, under the 'Health' section, gives feedback on whether these things are enabled.
Proposed Solution
For deterministic builds, it is enough to specify in a .csproj (or better, in a Directory.Build.props for the whole solution at once):
<PropertyGroup>
<ContinuousIntegrationBuild Condition="'$(GITHUB_RUN_ID)' != ''">true</ContinuousIntegrationBuild>
</PropertyGroup>
See https://github.com/terrafx/terrafx.interop.windows/blob/main/Directory.Build.props#L44, etc.
Or, for local testing, dotnet build /p:ContinuousIntegrationBuild=true.
Symbols could be published in a few ways. Either include the .pdbs into the main NuGet package per https://github.com/dotnet/sourcelink#include-in-main-package, or generate a .snupkg and publish it to NuGet with these two .csproj properties:
<PropertyGroup>
<IncludeSymbols>true</IncludeSymbols>
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
</PropertyGroup>
nuget push should collect and automatically push any symbol package adjacent to a .nupkg.
With these done, Source Link should also just 'light up' if you're using the latest .NET SDK to publish.
Alternatives Considered
No response
Additional Context
The goal is more or less to go from this:
to something vaguely resembling this:

Pre-submission Checklist
Problem Statement
Modern .NET (since the .NET 8 SDK) includes Source Link. The effect is that- when debugging a dump that contains frames from a given DLL or package, or when performing 'Peek Definition' or 'Go To Definition', instead of decompiling, the proper corresponding source files are automatically fetched by a compatible IDE. This makes build-time and debugging work considerably easier.
Hexa.NET.ImGui isn't Source Link enabled. This in itself is not a problem, but trying to 'Go To Definition' for any overload generally is far too slow to be usable in Visual Studio 2026. I need the repo open somewhere if I wanna quickly check what an overload precisely does, which does slow things down on occasion.
Source Link goes hand in hand with deterministic builds, which basically just attest that the build was in fact generated from the sources it claims to be. This is quite painless to enable on CI.
Another topic is that no symbols seem to be published on NuGet. It would be helpful to do so, since only minimal changes should be required to
.csprojfiles to enable it.NuGet Package Explorer, under the 'Health' section, gives feedback on whether these things are enabled.
Proposed Solution
For deterministic builds, it is enough to specify in a
.csproj(or better, in aDirectory.Build.propsfor the whole solution at once):See https://github.com/terrafx/terrafx.interop.windows/blob/main/Directory.Build.props#L44, etc.
Or, for local testing,
dotnet build /p:ContinuousIntegrationBuild=true.Symbols could be published in a few ways. Either include the
.pdbs into the main NuGet package per https://github.com/dotnet/sourcelink#include-in-main-package, or generate a.snupkgand publish it to NuGet with these two.csprojproperties:nuget pushshould collect and automatically push any symbol package adjacent to a.nupkg.With these done, Source Link should also just 'light up' if you're using the latest .NET SDK to publish.
Alternatives Considered
No response
Additional Context
The goal is more or less to go from this:
to something vaguely resembling this: