abpframework/abp · error · Exception
Build failed!
Error message
Build failed!
What it means
Thrown by DefaultDotNetProjectBuilder.BuildSolution when the underlying 'dotnet build <sln> /graphBuild' invocation exits with a non-zero status. The build output is already printed to the console in red; this exception propagates the failure to the caller. The message is intentionally generic because the real diagnostic detail is in the captured dotnet output.
Source
Thrown at framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/DefaultDotNetProjectBuilder.cs:69
public void BuildSolution(string slnPath, string arguments)
{
var buildArguments = "/graphBuild " + arguments.TrimStart('"').TrimEnd('"');
Console.WriteLine("Executing...: dotnet build " + slnPath + " " + buildArguments);
var output = CmdHelper.RunCmdAndGetOutput(
"dotnet build " + slnPath + " " + buildArguments,
out int buildStatus
);
if (buildStatus == 0)
{
WriteOutput(output, ConsoleColor.Green);
}
else
{
WriteOutput(output, ConsoleColor.Red);
throw new Exception("Build failed!");
}
}
private void BuildInternal(DotNetProjectInfo project, string arguments, ConcurrentBag<string> builtProjects)
{
var buildArguments = arguments.TrimStart('"').TrimEnd('"');
Console.WriteLine("Executing...: dotnet build " + project.CsProjPath + " " + buildArguments);
var output = CmdHelper.RunCmdAndGetOutput(
"dotnet build \"" + project.CsProjPath + "\" " + buildArguments,
out int buildStatus
);
if (buildStatus == 0)
{
builtProjects.Add(project.CsProjPath);
WriteOutput(output, ConsoleColor.Green);
}View on GitHub (pinned to 7ed43b1931)
Solutions
- Read the dotnet output already printed above the exception to find the compile/restore error.
- Run 'dotnet build <slnPath> /graphBuild' manually in the same directory to reproduce and iterate faster.
- Restore packages ('dotnet restore') and confirm the correct SDK is installed ('dotnet --version').
- Fix the underlying compile error, then re-run the ABP build command.
Example fix
# before: build fails, exception thrown abp build # after: reproduce manually, fix the error, rebuild dotnet build MySolution.sln /graphBuild # ... fix reported CS errors ... abp build
Defensive patterns
Strategy: try-catch
Validate before calling
// Pre-flight: confirm the SDK and solution exist before building.
if (!File.Exists(slnPath)) throw new FileNotFoundException("Solution not found: " + slnPath);
var (sdk, _) = CmdHelper.RunCmdAndGetOutput("dotnet --version", out _);
if (string.IsNullOrWhiteSpace(sdk)) throw new InvalidOperationException(".NET SDK not found on PATH."); Try / catch
try
{
builder.BuildSolution(slnPath, arguments);
}
catch (Exception ex) when (ex.Message == "Build failed!")
{
logger.LogError(ex, "Solution build failed; inspect the dotnet output above for compile/restore errors.");
throw;
} Prevention
- Run 'dotnet restore' and 'dotnet build' locally before invoking 'abp build'.
- Pin the .NET SDK version (global.json) to avoid environment drift.
- Keep the working directory at the solution root.
- Treat compile errors as failures in CI so the ABP build is only the final step.
When it happens
Trigger: CmdHelper.RunCmdAndGetOutput runs 'dotnet build <slnPath> /graphBuild <args>' and buildStatus != 0. Triggered by compilation errors, missing SDK, restore failures, or invalid solution files during an ABP CLI build operation.
Common situations: Code compilation errors; missing or incompatible .NET SDK; NuGet restore failures (offline feed, auth); broken .sln/.slnx file; pre-existing errors in a repo when running 'abp build'; wrong working directory so the solution path is stale.
Related errors
- Cyclic dependency found! Item: {item}
- There are more than 1 config (abp-build-config.json) file in
- There is no solution file (*.sln or *.slnx) and {_buildConfi
- Remote origin is null for given repository !
- Couldn't find repository name using remote origin url !
AI-assisted analysis of abpframework/abp@7ed43b1931 (2026-08-13).
Data as JSON: /api/errors/0f88a4cdcc5fc064.
Report an issue: GitHub.