SkillAgentSearch skills...

GetNuTool

Embeddable Package Manager (+core in .bat); šŸ•Š Lightweight tool to Create or Distribute using basic shell scripts (no powershell no dotnet-cli)

Install / Use

/learn @3F/GetNuTool

README

GetNuTool

Embeddable Package Manager (+core in .bat); šŸ•Š Lightweight tool to Create or Distribute using basic shell scripts (does not require powershell or dotnet-cli); NuGet / Chocolatey client;

Copyright (c) 2015-2025  Denis Kuzmin <x-3F@outlook.com> github/3F

怌 ā¤ 怍 License Build status release

gnt-help | gnt~& svc.gnt | gnt*/p:use=documentation

gnt Fnv1a128                                  # Get Fnv1a128 package
gnt +DllExport                                # Install DllExport package
gnt *DllExport                                # Install and Run DllExport.bat
gnt ~hMSBuild                                 # Touch hMSBuild
gnt /t:pack /p:ngin="bin\DllExport"           # Create new DllExport package
gnt "Conari;regXwild"                         # Get Conari & regXwild packages
msbuild gnt.core /p:ngpackages=LuNari/1.6.0   # Use msbuild to get LuNari 1.6.0 
gnt Huid/1.0.0:src.zip /t:grab                # Grab Huid 1.0 as zip without unpacking
gnt /p:ngconfig="dir\packages.config"         # Use specified packages.config
set ngpackages=Conari & gnt                   # shell scripts
gnt /p:ngpackages=putty.portable/0.69         # chocolatey
    /p:ngserver="https://chocolatey.org/api/v2/package/"

Download all editions: Core, Minified, Executable, C# version for .NET, ...

Direct Links to the latest stable:

  • (Windows) Latest stable compiled batch-script [ gnt.bat ] https://3F.github.io/GetNuTool/releases/latest/gnt/

Projects based entirely on GetNuTool

  • netfx4sdk - Developer Pack (SDK). NETFX 4: Visual Studio 2022+ / MSBuild 17+ / or other modern tools;
  • hMSBuild - Compiled text-based embeddable pure batch-scripts for searching modern MSBuild instances;
  • .NET DllExport Manager - Part of the DllExport tool that provides its completely independent management and distribution beyond the NuGet ecosystem. Relies on MvsSln as well;

Why GetNuTool

> gnt                                      # via single shell script
> msbuild gnt.core                         # via MSBuild engine
[NuGet gnt.raw("/t:pack /p:ngin=7z.Libs")] # via SobaScript
new GetNuTool()                            # .NET(netfx 4.0+, .NET 5+, .NET Core, Mono) C#

Lightweight Portable and completely Embeddable (+core in .bat) package tool to create or distribute everything from anything.

Back in those days it was originally developed as an alternative to solution level limitations, i.e. github.com/NuGet/Home/issues/1521. In attempt to provide a tool to easily maintain projects, libraries, and other related build processes; For all projects at once at the solution level and of course for each separately if necessary.

For example, it was designed to be more friendly to such NuGet packages:

However! GetNuTool has more powerful ways even for standard NuGet packages providing a wider range of use cases.

Key Features

  • Install .nupkg packages from remote NuGet (or like: chocolatey, ...) servers.
  • Grab or Install any zipped packages from direct sources (local, remote http, https, ftp, ...).
  • Controlled unpacking of all received packages. Modes: get or grab or install or touch
  • Hash values control using sha1 for receiving every package if used unsecured channels (~windows xp) etc.
  • Creating new NuGet packages .nupkg from .nuspec.
  • Two supported formats: xml packages.config (+extra: output, sha1) and inline records.
  • Inline records and packages.config are fully compatible between, and config has backward compatibility with original packages.config
  • Configurable custom folders for every receiving.
  • Request to the server only if the package is not installed.
  • Supports proxy with custom credential.
  • Default settings are overridden through an environment variables: default .config files, NuGet server, etc.
  • The ability to create one click ~8 KB .bat wrappers for any packages. Try for example vsSolutionBuildEvent.bat
  • Easy integration into any scripts such as pure batch-script netfx4sdk, DllExport, hMSBuild
  • C# projects support via GetNuTool.cs
  • .pkg.install.bat and .pkg.install.sh support for install, run, touch modes and additionally via + (plus), * (asterisk), ~ (tilde) i.e. gnt +..., gnt *..., gnt ~... respectively.

Note:

  • Dependencies are not considered.
  • Doesn't manage projects or solutions files. You need MvsSln or anything else together with.
  • NuGet events (Init.ps1, Install.ps1, Uninstall.ps1) from /tools will not be launched automatically.

tModes and Commands

get

For receiving packages or zipped files from local or remote source, then installing / extracting.

The get is used by default but you can also specify /t:get

Property | Description | Default values ------------|--------------------------------------------------------------|----------------- ngconfig | Define .config files. | 1.9+ packages.config;.tools\packages.config šŸ”’ ngserver | Define server. | 1.0+ https://www.nuget.org/api/v2/package/ ngpackages | List of packages. Disables ngconfig if specified. | ngpath | Common path for all packages. | 1.0+ packages wpath | 1.4+ To change working directory. | 1.4+ (The absolute path of the directory where the GetNuTool is located) šŸ”’ proxycfg | 1.6.2+ To configure connection via proxy. | ssl3 | 1.9+ Do not drop legacy ssl3, tls1.0, tls1.1 if true.| break | 1.9+ Disable the break on first package error if no |

*šŸ”’ env protected property in 1.10+. Changing the value using an environment variables with the same name is prohibited. All intersections in used environment must be removed before actual execution (for example set "ngserver="), otherwise it will result in denied error.

Package List Format

Attribute | Description | Example ----------|----------------------------------------------|------------------------------ id | Identifier of package. | Conari version | (Optional) Package version. | 1.5.0 or 1.5-beta2 or 1.5-RC etc. output | (Optional) Where to store package data. | ../tests/case1 sha1 | (Optional) Expected sha1 for this package. | eead8f5c1fdff2abd4da7d799fbbe694d392c792

Note:

  • As of version 1.2+, attributes are now case sensitive. Please use lowercase for id, version, output, sha1.
  • It will link to the latest available version if version attribute is not defined.
  • output attribute is relative to ngpath. You can also use absolute path.
  • sha1 activates the alternative security check before each accessing (modes: get, install, run, touch, grab). It useful when connection is not secure like on windows xp with obsolete ciphers. But please note: some servers (like official NuGet) may repackage .nupkg for some purposes, such as adding .signature.p7s etc. This of course changes sha1 hash value that you need to check.
  • id allows only a-z A-Z 0-9 . - _ symbols without whitespaces.
ngpackages
id[/version][?sha1][:path];id2[/version][?sha1][:path];...

delimiters:

  • ; 1.6+ Name1;Name2;Name3
  • | 1.0-1.9 Name1|Name2|Name3
/p:ngpackages=Name1
/p:ngpackages="Name1;Name2"
packages.config
<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Name1" version="1.5.0" />
  <package id="Name2" output="path" />
  <package id="Name3" version="2.2-RC" sha1="eead8f5c1fdff2abd4da7d799fbbe694d392c792" />
</packages>
/p:ngconfig=".nuget/packages.config"
/p:ngconfig="debug.config;release.config;..."

Proxy Format

[usr[:pwd]@]host[:port]
/p:proxycfg="example.com:4321"

grab

1.9+

Gra

View on GitHub
GitHub Stars32
CategoryProduct
Updated2mo ago
Forks6

Languages

Batchfile

Security Score

95/100

Audited on Jan 9, 2026

No findings