vcsjones / AzureSignTool

SignTool Library and Azure Key Vault Support
MIT License
267 stars 85 forks source link

Prepare for Native AOT #246

Closed vcsjones closed 3 months ago

vcsjones commented 3 months ago

One of the goals (see #202) that I missed for the AST 5.0 release is that it was not publishable as a Native AOT application.

I ran in to a number of problems while investigating this that this PR intends to solve.

  1. At the time of the investigation, parts of the Azure SDK were not trimming compatible. This has since been resolved.
  2. At the time of the investigation, the command line parsing library that was used is not Native AOT friendly. This library is also in maintenance mode, so it was time to replace it. This PR replaces the command line parsing with a new parser with a specific design goal of being AOT / trimming compatible.

The new parser is not a drop in replacement. I made an effort to make sure the command line people are already using should remain valid, so it shouldn't break anyone. That said, the differences are big enough that there is likely a scenario or input that I have not tested. When we get closer to a v6.0 release, I intend to publish pre-release builds so that hopefully the community can test the new command line parser for compatibility breaks.

That said, after these changes, AzureSignTool can be built with zero trimming warnings or suppressions. The final AzureSignTool binary is 12.5 MB. I might be able to whittle it down a bit more, but considering that this has a whole bunch of the Azure SDK in it, I think it's a reasonable starting point and isn't big beyond usefulness.