Skip to content

Disable FullAssemblySigningSupported by default on non-Windows platforms#16566

Open
aw0lid wants to merge 1 commit intodotnet:mainfrom
aw0lid:fix/disable-full-signing-non-windows
Open

Disable FullAssemblySigningSupported by default on non-Windows platforms#16566
aw0lid wants to merge 1 commit intodotnet:mainfrom
aw0lid:fix/disable-full-signing-non-windows

Conversation

@aw0lid
Copy link

@aw0lid aw0lid commented Mar 4, 2026

Fixes dotnet/runtime#123010

Summary

This PR changes the default value of FullAssemblySigningSupported to false for non-Windows builds within the Arcade SDK. This ensures a smoother developer experience on modern Linux distributions (like RHEL 9/10) where strict security policies disable RSA+SHA-1, which is required for strong-name signing.

Context & Reasoning

As reported in dotnet/runtime#123010, building .NET repositories on modern Linux environments fails because the build system attempts full assembly signing using SHA-1 by default. Since full signing is typically only required for official Microsoft builds, we are moving the default to false for all non-Windows platforms.

This is the second phase of the plan discussed with @jkotas in dotnet/runtime#123401:

  • Phase 1 (Completed): Patched the F# compiler and explicitly opted-in dotnet/fsharp to signing to maintain stability (dotnet/fsharp#19242).
  • Phase 2 (This PR): Implement the global default change in Arcade to protect the entire ecosystem (SDK, ASP.NET, etc.) from similar build failures.

Changes

  • Modified the root Directory.Build.props to set FullAssemblySigningSupported to false on non-Windows platforms.
  • Used a conditional check Condition="'$(FullAssemblySigningSupported)' == ''" to allow projects to manually opt-in if full signing is explicitly required.

Validation

  • Linux: Verified that FullAssemblySigningSupported evaluates to false by default using a test project.
  • Windows: Confirmed that Windows builds remain unaffected (true by default).
  • Bootstrapping: Verified that the bootstrapping process (e.g., XliffTasks) completes successfully on Linux without requiring manual flags.

Related Issues

@aw0lid
Copy link
Author

aw0lid commented Mar 4, 2026

@jkotas

As planned here, this is Step 2: changing the global default in Arcade.

This follows the completion of Step 1 (the F# fixes in dotnet/fsharp#19242).

@aw0lid aw0lid marked this pull request as ready for review March 4, 2026 14:25
<Project>

<PropertyGroup>
<FullAssemblySigningSupported Condition="'$(FullAssemblySigningSupported)' == '' and '$(OS)' != 'Windows_NT'">false</FullAssemblySigningSupported>
Copy link
Member

Choose a reason for hiding this comment

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

This Directory.Builds.props is for Arcade repo build only.

This needs to apply to all repos that use Arcade - similar to how it works for source-build today. I think this is the right place to change this:

FullAssemblySigningSupported "false" to use public signing even when full signing is possible. This is useful

@jkotas
Copy link
Member

jkotas commented Mar 4, 2026

It may be better to submit this change via https://github.com/dotnet/dotnet to make it easier to validate that nothing got broken and revert if needed.

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.

Make building runtime easier on RHEL

2 participants