25 Commits
Author SHA1 Message Date
Christoph Wille 1c7e0efef0 Generate SBOM only on integration build 2026-10-05 07:37:41 +02:00
Siegfried Pammer e0cde005f9 Carry all publish RIDs in the core-library lock files
ICSharpCode.Decompiler / ILSpyX / BamlDecompiler set RestoreLockedMode but
declared no RuntimeIdentifiers, so their lock files were RID-agnostic. A
RID-specific 'dotnet publish -r <rid>' of ILSpy (which declares all four
distribution RIDs) propagated the RID to these locked project references and
failed restore with NU1004 unless --no-restore or --force-evaluate was used.
Declare the same win-x64;win-arm64;linux-x64;osx-arm64 set on the three
libraries and regenerate the locks so a locked-mode publish works for every
platform out of the box.

Assisted-by: Claude:claude-opus-4-8:Claude Code
2026-06-10 00:11:56 +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 83716e1801 Port ILSpy.Tests analyzer-library tests
Port all five analyzer test files from ILSpy.Tests/Analyzers (the
WPF-side test project that exercises the shared ICSharpCode.ILSpyX
library) into ILSpy.Avalonia.Tests/Analyzers/Library. The analyzer
logic itself is platform-agnostic, so the tests run unchanged once
the test assembly can reach the library's internals.

Assisted-by: Claude:claude-opus-4-7:Claude Code
2026-06-08 18:34:53 +02:00
Siegfried Pammer b729995435 Remove WPF ILSpy host (prep for Avalonia rewrite)
Strip the WPF ILSpy/, ILSpy.Tests/, and ILSpy.BamlDecompiler/ projects
and their solution entries so this commit can serve as the base for
replaying the rewritten Avalonia history on top. The BAML plugin needed
UseWpf + AvalonEdit and had a ProjectReference to ILSpy/ILSpy.csproj;
once both are gone it cannot build and would block bisect for every
intermediate commit. The Avalonia main app will absorb its three exports
(factory, file handler, entry node) in the later "BAML to XAML
decompiler integration" commit.
2026-06-08 07:34:42 +02:00
Peter Crabtree e1e16b64f5 dev: Strip BOM mark from text files 2025-08-28 20:56:19 -04:00
Siegfried Pammer e4ebe20602 Upgrade dotnet target framework to net10 2025-07-04 19:08:07 +02:00
Christoph Wille 1263f48dc0 Use Microsoft.Sbom.Targets in Decompiler, BamlDecompiler and ILSpyX NuGets (#3346)
https://github.com/microsoft/sbom-tool/tree/main/src/Microsoft.Sbom.Targets to embed SBOM

* GeneratePackageOnBuild removed, build action now has a new step for dotnet pack
* Decompiler, BamlDecompiler and ILSpyX include SBOM
2025-01-10 20:44:36 +01:00
Christoph Wille 1048cd9557 Enable repeatable package restores (#3359)
Locking restricted to projects that create NuGet packages
    ICSharpCode.Decompiler
    ICSharpCode.ILSpyX
    ILSpyCmd
    ICSharpCode.BamlDecompiler
2025-01-03 14:30:08 +01:00
Holger Schmidt 09ed31d391 Generate Mermaid HTML diagrammer from input assembly via ilspycmd (#3324)
* added mermaid class diagrammer

contributed from https://github.com/h0lg/netAmermaid - find earlier git history there

* reading from embedded resource instead of file

* swapped out icon to brand diagrammers as an ILSpy product

reusing linked ..\ILSpy\Images\ILSpy.ico from UI project

* added required ilspycmd options and routed call

* adjusted VS Code task to generate model.json required by the JS/CSS/HTML dev loop

* added debug launchSettings

* updated help command output

* using ILSpyX build info in generated diagrammers
removing unused code

* using explicit type where it's not obvious

* outputting in to a folder next to and named after the input assembly + " diagrammer" by default

* renamed diagrammer output to index.html

to support default web server configs in the wild

* improved instructions for creating an off-line diagrammer

* added developer-facing doco for how to edit the HTML/JS/CSS parts

* renamed to remove netAmermaid branding

* updated repo URL and doco link to new Wiki page

* copied over doco

* removed obsolete parts

* moved CLI doco into ILSpyCmd README

* removed end-user facing chapters that go into the Wiki from dev-facing doco

* updated to ilspycmd API and rebranded to ILSpy

* removed doco that's now in https://github.com/icsharpcode/ILSpy/wiki/Diagramming

* added tasks
2024-11-15 07:56:50 +01:00
tom-englert 0be506bd4e Get rid of the heavy System.ComponentModel.Composition, replace with the lightweight System.Composition.AttributedModel 2024-10-22 05:41:52 +02:00
tom-englert 152f70e789 ILSpyX: remove InternalsVisibleTo for ILSpy + remove some redundant code. 2024-09-14 14:29:30 +02:00
Christoph Wille d54ac416f7 SharpTreeView: Split into ILSpyX.TreeView and ILSpy.Controls.TreeView (#3240)
* Changes necessary for making SharpTreeNode cross platform by proxying System.Windows dependencies
* Add ITreeNodeImagesProvider for node icons
* Move InternalsVisibleTo to csproj (possible since net50)
* Move view models and other xplat class for SharpTreeView to ILSpyX, Windows-dependent classes to ILSpy/Controls/TreeView
* Move GetDoubleClickTime to NativeMethods
2024-07-28 15:27:41 +02:00
Christoph Wille 8acd117f91 Move non-UI analyzer code to ILSpyX 2024-03-29 09:59:37 +01:00
Christoph Wille 084d02a447 Apply Central package management (requires package source mapping) (#3124)
* Apply Central package management https://learn.microsoft.com/en-us/nuget/consume-packages/central-package-management (requires package source mapping https://learn.microsoft.com/en-us/nuget/consume-packages/package-source-mapping)

* Microsoft.DiaSymReader.Converter.Xml from dotnet-tools, Microsoft.DiaSymReader.Native from nuget.org feed

* Trying to sort what is on which feed for previews of Diasymreader packages

* Parse the Roslyn version from Directory.packages.props

* Use specific versions for Diasymreader from nuget.org to allow VS2022 addin to restore properly

* Tests needs also locked references
2023-11-23 07:25:23 +01:00
Christoph Wille abce1a5ae9 Go to latest version where applicable (ics.d stays on v6 for SRM) (#3120) 2023-11-20 12:42:30 +01:00
Siegfried PammerandChristoph Wille a94d66561a Move to .NET 8.0 (#3119)
* Basics of net8.0. Breaking unit tests expected.

* Missed that TestRunner project was already upgraded to net7.0 (search and replace fail)

* Use Preview 6 locally

* Use .NET 8.0 RTM

* Final fixups

---------

Co-authored-by: Christoph Wille <[email protected]>
2023-11-17 20:23:38 +01:00
Theodore Tsirpanis ca3b916577 Remove unnecessary package references. (#2990)
* Remove references to .NET Standard 1.x packages.
* Also remove `System.Bufffers`.
2023-05-30 15:53:20 +02:00
Christoph Wille 1be0ccb3eb Update NuGet packages & clean up dependency references a bit 2023-03-25 09:05:44 +01:00
Daniel Grunwald 3b6a650cf1 Fix nullability warnings in ILSpyX 2022-11-03 21:01:55 +01:00
Siegfried Pammer 6d4c5f3273 Fix #2757: Inject ILSpyUpdateAssemblyInfo into GetPackageVersionDependsOn so Pack uses the generated version when evaluating project references. (#2769) 2022-08-27 18:31:03 +02:00
Christoph Wille 5379b29c30 Build ILSpyX NuGet package 2022-06-14 08:17:00 +02:00
Siegfried Pammer d5f8145a10 Convert solution-level dependencies to project-level dependencies.
Solution-level dependencies are incompatible with slnf.
2022-04-03 15:45:57 +02:00
Siegfried Pammer b50e72c336 Add strong name to ILSpyX and fix platform warnings. 2022-04-02 14:27:27 +02:00
Siegfried Pammer 4b475cfa69 Create ILSpyX project and make the following APIs reusable:
- AssemblyList, AssemblyListManager, AssemblyListSnapshot
- LoadedAssembly
- LoadedPackage and friends
- PDB providers
2022-03-20 20:15:11 +01:00