alma.debugify 1.3.4

dotnet tool install --global alma.debugify --version 1.3.4
                    
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest
                    
if you are setting up this repo
dotnet tool install --local alma.debugify --version 1.3.4
                    
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=alma.debugify&version=1.3.4
                    
nuke :add-package alma.debugify --version 1.3.4
                    

alma.debugify

TLDNR; A dotnet tool that allows you to quickly debug your own nuget packages

Do you maintain several libraries (probably using git..) and use nuget to utilize them in your projects? Then you may at times want to debug your nuget libraries, but

  • Sourcelink and
  • symbol packages (&st;packageid>.symbols.nupkg) do not work...?

Well, in order to debug your nuget package you could still

  • compile your nuget project in Debug configuration
  • copy the output *.dlls and *.pdbs from bin\Debug
  • head over to the local nuget package cache at %userprofile%.nuget\packages
  • and replace the dlls of your nuget package with the Debug dlls.

Wait... you use git-version to version your nuget packages?

  • then you, of course, have to overwrite the <Version> element in your nuget *.cpsroj file first so the versions match up!

Well... that works... sort of. But later on you need to remember to remove your Debug dlls from the package cache again or you run the risk to include them in your final product (in case you ocasionally have to run the publish process on your dev machine... it happens 🙄)

What if there was a tool that could to all this? Meet ✨debugify✨

  • debugify packs and "deploys" your nuget lib including source to the local package cache
  • you can specify a single project or a whole solution folder - it picks all potential packable csproj files
  • you can also overwrite the version of the packages (debugify -v 1.8.5 will create a <packageid>.1.8.5.nupkg file)
  • and even best, because it creates a marker file .debugified into the folder of each debugified package (%userprofile%.nuget\packages&lt;packageid>\1.8.5) you can clean it all up by simply calling debugify cleanup anywhere!

What do you think? 🥳

Installation

Install debugify as a global dotnet tool:

dotnet tool install --global alma.debugify

Usage Examples

Basic Usage

Debugify packages in the current directory:

debugify

Specify Version with Release Configuration

Debugify a specific version and build in Release mode:

debugify -v 1.6.6 -c Release

Force Rebuild

Force a full rebuild to ensure fresh DLLs:

debugify --rebuild

or using the short form:

debugify -r

Specify a Specific Project File

Debugify a specific .csproj file with a version:

debugify -p ./MyProject.csproj -v 1.6.6

Verbose Output with Rebuild

Get detailed output while forcing a rebuild:

debugify --verbose --rebuild -c Debug

Override Package ID

When working with projects like Avalonia where multiple projects target the same NuGet package:

debugify -p ./Avalonia --packageid Avalonia -v 11.0.0

This will use "Avalonia" as the package ID instead of inferring it from the project file, allowing you to build multiple projects that contribute to a single NuGet package.

Cleanup

Remove all debug DLLs from the NuGet cache:

debugify cleanup

List Debugified Packages

Show all packages that have been debugified:

debugify list

Command-Line Options

  • -v, --version - Specify the version you'd like to debugify
  • -c, --configuration - Build configuration (Debug or Release). Default is Debug
  • -r, --rebuild - Force a full rebuild of projects (slower but ensures fresh DLLs)
  • -p, --path - Path to *.csproj file or a folder that contains it
  • --verbose - Set output to verbose messages
  • --buildargs - Additional arguments for dotnet build (e.g., " --no-restore")
  • --packageid - Override the package ID for the NuGet cache lookup. Useful when building projects where the NuGet package name differs from the project's PackageId/AssemblyName (e.g., Avalonia projects where multiple projects contribute to a single package)
Product Compatible and additional computed target framework versions.
.NET net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

Version Downloads Last Updated
1.3.4 107 12/12/2025
1.3.3 107 12/12/2025
1.3.2 135 11/28/2025
1.3.1 393 11/20/2025
1.3.0 387 11/20/2025
1.2.0 263 2/26/2024
1.1.0 567 9/12/2022
1.0.6.3 575 6/2/2021
1.0.6.2 508 4/21/2021
1.0.6.1 532 2/25/2021
1.0.6 584 10/28/2020
1.0.5 550 10/8/2020
1.0.4 554 10/8/2020
1.0.3 632 10/7/2020
1.0.2 641 10/7/2020
1.0.1 651 10/7/2020
1.0.0 689 10/6/2020

#1.3.4.0
- supports --packageid override
- searches for Directory.Build.props intelligently (if found, tries to find version, if no version, tries to find linked props files)
   #1.3.3.0
- version compare normalizes versions so 1.6.8 equals 1.6.8.0
#1.3.2.0
- does only replace packages of specific version in nuget cache (not all versions)
- also replaces dlls in ref subfolder
- when version is not applied explicitly, also searches for Directory.Build.props in parent directories
#1.3.1.0
- added readme.md
- improved --help output
#1.3.0.0
- rebuild option (--rebuild -r)
- shows current configuration and if rebuild is enabled
- writes current date to debugified file
- if verbose, outputs relative path of every replaced file
- spectre console beautification
- supports release build
- does not create nuget packages anymore but directly replaces dlls
- skips building projects that do not exist in the cache (by project name and <PackageId>)
       #1.2.0.0
       - target .net 8
#1.1.0.0
- deletes existing *.symbols.nupkg files
- ignores "Test" and "Tests" projects
- can handle package versions, where revision is not set (2.3.1 instead of 2.3.1.0)
- can determine packageid by <PackageId>, <AssemblyName > or *.csproj filename)
   #1.0.6.3
- dropped "--force" flag due to 'MSBUILD : error MSB1001: unknown switch.'
#1.0.6.2
- if version cannot be replaced, outputs error instead of cancelling process
#1.0.6.1
- supports adding additional arguments for dotnet pack
- supports project files without <version> element as long as a version is provided using the -v argument
- fallback to msbuild if additional targets are required that dotnet pack does not support
- swapping project files so git status does not complain about "file changed though contents are the same"