stride3d/stride · error · ArgumentException

This tool requires an input file (package, project, or…

Error message

This tool requires an input file (package, project, or .sdbuild manifest), or a --solution-file and --package-id.

What it means

ValidateOptions throws this ArgumentException when no usable input was provided: neither PackageManifestFile, PackageFile, nor a SolutionFile together with a non-empty PackageId. The builder needs at least one of these to know what to build. The 'inputPackageFile' parameter name points at the missing input option.

Solutions

  1. Pass one explicit input: --package-manifest-file, or --input-package-file, or both --solution-file and --package-id
  2. Verify the variables backing these arguments are non-empty at invocation time
  3. Use a .sdbuild manifest file when multiple assets/packages must be built together
  4. Check the tool's argument parsing/help for the current option names

Example fix

// before
Stride.AssetCompiler --solution-file=MyGame.sln
// after
Stride.AssetCompiler --solution-file=MyGame.sln --package-id=8a4c9f20-1111-2222-3333-444455556666
Defensive patterns

Strategy: validation

Validate before calling

bool hasInput = !string.IsNullOrWhiteSpace(manifestFile)
    || !string.IsNullOrWhiteSpace(packageFile)
    || (!string.IsNullOrWhiteSpace(solutionFile) && packageId != Guid.Empty);
if (!hasInput) throw new ArgumentException("Provide a package, project, or .sdbuild manifest (or solution-file + package-id)");

Try / catch

try { RunBuilder(options); } catch (ArgumentException ex) when (ex.ParamName == "inputPackageFile" && ex.Message.Contains("requires an input file")) { Console.Error.WriteLine("No build input supplied; see --help"); return 1; }

Prevention

When it happens

Trigger: Running the PackageBuilder tool with none of --package-manifest-file, --input-package-file, or the --solution-file + --package-id pair; e.g. only --solution-file given, or --package-id given with an empty Guid; argument parsing dropped options due to a script bug.

Common situations: Incomplete CI pipeline invocations after option renames between Stride versions; scripts where variables feeding the arguments were empty; users assuming the tool builds a whole solution by default (it does not).

Understand the failure class

Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.

Related errors


AI-assisted analysis of stride3d/stride@96fad776d2 (2026-09-14). Data as JSON: /api/errors/9736c343c807b82c. Report an issue: GitHub.

Appendix: source

Thrown at sources/assets/Stride.AssetCompiler/PackageBuilderOptions.cs:103

                BuildDirectory = Path.GetFullPath(BuildDirectory);
            }
            catch (Exception)
            {
                throw new ArgumentException("The provided path is not a valid path name.", "build-path");
            }

            if (SlavePipe == null)
            {
                if (!string.IsNullOrWhiteSpace(PackageManifestFile))
                {
                    if (!File.Exists(PackageManifestFile))
                        throw new ArgumentException("Build manifest [{0}] doesn't exist".ToFormat(PackageManifestFile), "packageManifestFile");
                }
                else if (string.IsNullOrWhiteSpace(PackageFile))
                {
                    if (string.IsNullOrWhiteSpace(SolutionFile) || PackageId == Guid.Empty)
                    {
                        throw new ArgumentException("This tool requires an input file (package, project, or .sdbuild manifest), or a --solution-file and --package-id.", "inputPackageFile");
                    }
                }
                else if (!File.Exists(PackageFile))
                {
                    throw new ArgumentException("Package file [{0}] doesn't exist".ToFormat(PackageFile), "inputPackageFile");
                }
            }
        }
    }
}

View on GitHub (pinned to 96fad776d2)