Commit Graph
102 Commits
Author SHA1 Message Date
Daniel Grunwald d1645f50c9 Reduce verbosity of commit hook. 2026-08-15 11:37:16 +02:00
Daniel Grunwald 54939b6c3d Fix pre-commit hook failure when package source mapping is active
The hook installs dotnet-format with --add-source, which NuGet rejects
when packageSourceMapping is configured. The dotnet10-transport feed is
already declared in NuGet.config; adding a dotnet-format mapping entry
there lets the install succeed without --add-source.

Assisted-by: Claude:claude-sonnet-4-6:GitHub Copilot
2026-08-15 11:25:56 +02:00
Christoph Wille 76f6d8e767 Normalize illegal version characters in Linux package versions
CI versions derived from branch names can contain underscores (e.g.
'avalonia12_1_1'), which dpkg rejects in the Version field. Map every
character outside dpkg's allowed set to '.' after the existing '-' to
'~' substitution.

Assisted-by: Claude:claude-fable-5:Claude Code
2026-08-01 10:47:42 +02:00
Christoph Wille e2abac9428 Pin format.ps1 to Git Bash on Windows
A bare `bash` on Windows can resolve to the WSL launcher
(System32\bash.exe) ahead of Git Bash, running the pre-commit hook
inside a Linux distro. There the CRLF-checked-out script fails to parse
("$'\r': command not found"), and even with clean line endings the WSL
path would install a Linux dotnet-format instead of the Windows one.
Resolve Git Bash from git.exe's install location instead, the same
CRLF-tolerant shell git itself uses to run the hook; non-Windows
platforms keep using plain bash.

Assisted-by: Claude:claude-fable-5:Claude Code
2026-07-30 09:21:33 +02:00
Siegfried Pammer 579032a65e Generate version-info files with CRLF on all platforms
update-assemblyinfo.ps1 joined the template lines with
Environment.NewLine, so on Linux the generated DecompilerVersionInfo.cs
was written with LF and the pre-commit format hook re-flagged all of its
lines on every single commit. The repo's .cs files are CRLF; write the
generated file that way regardless of platform, and compare with the
same separator so the up-to-date check stays consistent.

Assisted-by: Claude:claude-fable-5:Claude Code
2026-07-23 17:01:28 +02:00
Siegfried Pammer 6b2852ce49 Set OpenSSL SHA1 flag in build scripts
Local OpenSSL defaults can reject legacy SHA-1 signatures during dotnet operations. Set the required compatibility flag inside the repository scripts so restore, build, publish, clean, and formatting paths do not depend on each caller's shell environment.

Assisted-by: OpenCode:openai/gpt-5.5:OpenCode
2026-07-02 15:43:24 +02:00
Christoph Wille aab6303870 Migrate the VS extension to an SDK-style VSIX (dotnet build) and retire the VS2017/2019 add-in (#3808)
* Migrate ILSpy.AddIn.VS2022 to SDK-style VSIX project
* Retire the legacy VS2017/2019 ILSpy add-in
* Build the VS extension via dotnet build on the slnx
* Inline ILSpy.AddIn.Shared into ILSpy.AddIn.VS2022
* Restore the VS add-in menus broken by the SDK-style migration
2026-06-24 06:09:29 +02:00
Christoph Wille b20bb452c2 Add offline dmg tooling and Homebrew cask template
The macOS CI artifact is an unsigned zipped ILSpy.app; the signed
distribution channel is a dmg the release manager creates offline with
create-dmg.ps1 (codesign and notarization stay optional parameters, so
no signing secrets ever live in CI). Distribution via Homebrew uses a
tap repository holding only a cask file that points at the dmg attached
to the GitHub release; the cask template and per-release update steps
are documented next to the scripts.

Assisted-by: Claude:claude-fable-5:Claude Code
2026-06-13 13:27:28 +00:00
Christoph Wille b6b1bf99be Add Linux and macOS publish and packaging scripts
With the move to Avalonia the app runs on Linux and macOS, so the
distribution tooling grows beyond Windows: publish.ps1 gains a
-Platform parameter (the default keeps the Windows behavior unchanged),
and new BuildTools scripts package the self-contained publish outputs
into a zip, deb, and rpm on Linux and a zipped ILSpy.app on macOS.

Nothing is signed at package time; signing happens offline on the
release manager machine. Info-ZIP zip is used instead of
Compress-Archive because the latter drops unix mode bits. deb/rpm are
built with dpkg-deb/rpmbuild directly (both preinstalled on GitHub
ubuntu runners) following sourcegit-scm/sourcegit's proven model,
including the libicu OR-chain in the deb control file and disabled
auto-requires for the self-contained rpm payload. Pre-release versions
map '-' to '~' so both package managers sort them before the release.
The macOS bundle's Info.plist now carries placeholders stamped at
package time; on Windows the spec/control/desktop files are kept LF via
.gitattributes because Linux tools consume them verbatim.

Assisted-by: Claude:claude-fable-5:Claude Code
2026-06-13 13:27:28 +00:00
Siegfried Pammer c6c732deee Track BuildTools/pre-commit as executable
The blob was tracked 100644, so every fresh checkout (and any branch
switch in a worktree hosting the shared .git/hooks symlink target)
produces a non-executable hook script, which git then silently skips
with only an 'ignoredHook' hint. With core.fileMode=false on this
clone a plain chmod is git-invisible; the mode has to be fixed in the
index.

Assisted-by: Claude:claude-fable-5[1m]:Claude Code
2026-06-10 19:23:50 +02:00
Siegfried Pammer 7a4dd35406 Fix the installer icon path and regenerate the VSIX/MSI file lists
create-filelists.ps1 filtered to bin\Debug with `-contains` (collection
membership, always false for a substring test), so it skipped every artifact;
drop the broken filter. Point the installer ProductIcon at the relocated
ILSpy.ico (Images -> Assets) and regenerate the committed .filelist snapshots.

Assisted-by: Claude:claude-opus-4-8:Claude Code
2026-06-10 00:08:58 +02:00
Siegfried Pammer 667f6ad5f8 Add pwsh dev scripts, repo-wide lock files, and CI NuGet caching
Replace the Windows-only .bat helpers (clean / debugbuild / releasebuild /
restore / updatedeps and BuildTools/format) with cross-platform pwsh
scripts at the repo root: restore.ps1, build.ps1 (-Configuration), clean.ps1,
updatedeps.ps1 and BuildTools/format.ps1, alongside the existing publish.ps1.

Enable a packages.lock.json for every project by hoisting
RestorePackagesWithLockFile into the root Directory.Build.props (the four
core libraries set it individually before) and commit the generated locks,
so restores are repeatable and CI can cache packages off them.

Cache the NuGet packages folder in the three setup-dotnet workflows
(build-ilspy, build-frontends, codeql-analysis), keyed on the lock files
per the setup-dotnet caching guidance.

Scope the Debug "Verify package contents" check to the *.filelist outputs
it actually generates. A project's packages.lock.json is keyed only by
(framework, RID), with no host-OS axis, so a lock produced on Linux
legitimately differs from one produced on Windows whenever an OS-conditional
PackageReference applies (Debug+Windows pulls Microsoft.DiaSymReader*). The
Windows restore then rewrites those locks; that churn must not fail a step
whose job is to police the VSIX/MSI file lists.

Also drop the dead ILSpy.BamlDecompiler publish line from
publishlocaldev.ps1, mirroring the earlier publish.ps1 fix.

Assisted-by: Claude:claude-opus-4-8:Claude Code
2026-06-09 00:58:19 +02:00
Siegfried Pammer 1fb4acfc3d Build ICSharpCode.Decompiler.Tests + the format hook cross-platform
Decompiler.Tests targeted net11.0-windows only because
Microsoft.DiaSymReader.Native is Win-only and Tester.cs hardcoded ilasm.exe
/ ildasm.exe filenames. Both are narrow problems: gate the Native package
to Windows, replace the ".exe" suffix with an OS-aware helper, and drop
the -windows TFM. The Microsoft.NETCore.IL{,D}Asm metapackages' RID graph
already ships ilasm/ildasm for linux + osx via per-RID runtime sub-packages
when RuntimeIdentifier resolves dynamically, so the tool just lands in the
test output dir with the right suffix on every host.

Windows-only test fixtures (RoundtripAssembly + the RunWithTestRunner,
SignAssembly, FindMSBuild call sites) gate via Assert.Ignore +
[Platform("Win")] so they skip on non-Windows instead of failing. CA1416
joins NoWarn -- the analyzer can't see the runtime guards, and the test
inputs (Console.CapsLock, Registry access) are decompilation targets, not
infrastructure.

BuildTools/pre-commit learns to find dotnet-format on non-Windows (XDG
basedir + no .exe suffix) so the hook can run wherever the build now does.

Assisted-by: Claude:claude-opus-4-7:Claude Code
2026-06-08 07:34:33 +02:00
Siegfried Pammer d3e12d0ebf Migrate from .ruleset to .editorconfig 2025-12-29 19:24:31 +01:00
Christoph Wille 120154e21c Remove Translations (#3648) 2025-12-29 13:56:29 +01:00
Christoph Wille ac8503c005 .NET 10 RTM Package Update (#3609) 2025-11-11 15:36:39 +01:00
Christoph Wille 4f11813829 .NET 10 RC2 packages (#3599)
Note: transport feed had only 106 for dotnet-format and ILCompiler.Reflection.ReadyToRun.Experimental
2025-10-15 17:31:05 +02:00
Christoph Wille b4d33af238 Update packages to .NET 10 RC1 2025-09-09 16:14:00 +02:00
Peter Crabtree b4fb59ae5d dev: Standardize ps1 files to tabs 2025-08-28 20:56:19 -04:00
Peter Crabtree e1e16b64f5 dev: Strip BOM mark from text files 2025-08-28 20:56:19 -04:00
Peter Crabtree 1d082e7128 dev: Standardize on utf-8 (no bom) in .editorconfig 2025-08-28 20:56:19 -04:00
Christoph Wille afcdcec146 Update for .NET 10 Preview 7 packages (#3537)
* Update NUnit (was: 4.3.2) to 4.4 and MTP (was: 1.7.3) to 1.8.1 (had to add VSTestBridge explicitly to override ref complaints by compiler)
* Update to .NET 10 Preview 7 NuGet packages
* Update dotnet-format
2025-08-13 11:02:45 +02:00
Siegfried Pammer 9b576532c7 Update dotnet-format to 10.0.100-preview.6.25358.103 2025-08-04 08:53:33 +02:00
Siegfried Pammer e4ebe20602 Upgrade dotnet target framework to net10 2025-07-04 19:08:07 +02:00
Christoph Wille 5ba75bfd51 Fix for "Unable to locate dotnet CLI. Ensure that it is on the PATH." https://github.com/microsoft/azure-pipelines-tasks/issues/19162 (then see https://github.com/dotnet/format/pull/2000) 2024-11-17 15:04:25 +01:00
Siegfried Pammer 36abb399b3 #3327: update-assemblyinfo.ps1: Redirect stderr for commands that should ignore errors. 2024-11-16 23:51:05 +01:00
Siegfried Pammer 4ff0c262f9 Provide commit hash in AboutPage to make finding the correct version easier. 2024-09-20 22:44:32 +02:00
tom-englert d71394c43a Simplify adding tabs 2024-08-20 10:55:29 +02:00
Daniel Grunwald da24b7d126 Add BuildTools/format.bat 2024-07-19 17:00:44 +02:00
Christoph Wille 28b7280741 Fix dotnet-format to v8 via transport feed for dotnet8. See also PR #2747 2024-07-19 16:27:57 +02:00
Daniel Grunwald c2490d79ec Enable auto-formatting in commit-hook. 2023-05-28 13:59:43 +02:00
Daniel Grunwald fc882b9203 Automatically install dotnet-format in specific version in the commit hook. 2022-07-16 14:59:29 +02:00
Daniel Grunwald 08ceffc3ad Upgrade dotnet-format from version 5 to the version included with the .NET (6) SDK. 2022-07-15 12:09:13 +02:00
Siegfried Pammer 78c7ece12d * Include missing .json config in ILSpy.Installer.
* Add build action to check file lists of msi and vsix packages.
2022-04-15 11:54:51 +02:00
Siegfried Pammer 7019e1c02f Make sure that update-assemblyinfo.ps1 fails if PowerShell >= 5.0 is not installed. 2022-04-10 11:09:43 +02:00
Siegfried Pammer a88a413571 Fix DecompilerVersionInfoDependency in ILSpy.Installer.csproj 2022-04-03 17:34:39 +02:00
Siegfried Pammer c7719b1a6f Try again to remove ILSpy.dll.config. 2022-04-03 16:52:51 +02:00
Siegfried Pammer de630c9897 Fix ghactions-install.ps1 2022-03-20 20:35:42 +01:00
Siegfried Pammer b3f8e4fe3c Simplify update-assemblyinfo.ps1 and introduce public DecompilerVersionInfo class. 2022-03-20 18:37:00 +01:00
Siegfried Pammer 1ccc63b829 Revert removal of app.config.template 2022-03-13 14:53:07 +01:00
SilverFox cdeef0909f Fix output artifacts for CI builds 2022-03-11 12:22:08 +01:00
Siegfried Pammer 406f537fbe Ditch nuspec.template 2022-03-07 09:19:25 +01:00
Christoph Wille ce7f594010 Remove outdated build tools 2022-02-07 08:45:15 +01:00
Christoph Wille 9a4f5bc664 Minimal changes for building on .NET 6.0 2022-02-07 08:41:51 +01:00
Siegfried Pammer 07bedd45d1 Fix #2572: Shallow clones do not produce correct version numbers as these require full history. 2022-02-06 00:05:26 +01:00
Andreas Weizel 05874991a9 Rename installer project to ILSpy.Installer, use ILSpy app version as MSI package version 2021-11-20 23:46:10 +01:00
Andreas Weizel 075c447954 Rename ILSpy.AddIn.VS17 to ILSpy.AddIn.VS2022 2021-10-23 14:13:45 +02:00
Andreas Weizel 30e2efad9f Introduce a separate package for VS 2022 (VS17) AddIn
- Set a different GUID for VS 2022 VSIX package
- Fix wrong path in script
2021-10-22 00:25:21 +02:00
Daniel Grunwald 6410a7558e Use dotnet-format so it works on GitHub actions 2021-02-20 00:43:38 +01:00
Siegfried Pammer 404f8ed71d Add dotnet format to tidy.py 2021-02-16 23:28:10 +01:00