Skip to content

EN CSharp Directive Error

Codex edited this page Oct 11, 2026 · 2 revisions

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Obvious compilation error

Handbook C# · Practical Guide

Stops the compilation with an author error if the directive belongs to the active branch. The examples show conditions for intentional rejection.

Simple example (Example.cs)

Save this example separately as Example.cs. Run it independently of the other examples on this page.

Example.cs:

// PROJECT-EXAMPLE
#define CONFIGURED
#if !CONFIGURED
#error Missing configuration
#endif
System.Console.WriteLine("Configured");

This example compiles: CONFIGURED is defined, so the #error branch is inactive. The deliberately failing examples below remain labelled.

Result:

Configured

Syntax

#error message

These examples intentionally do not compile. After setting the desired configuration, remove the bug or move it to an inactive branch.

Status: Deliberate compilation error.

Example 1

#error Missing required configuration
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.IO;
using System.Runtime.InteropServices;
using System.Runtime.CompilerServices;

public static class Program
{
    public static async Task Main(string[] args)
    {
        Console.WriteLine("Never reached");
    }
}

Example 2

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.IO;
using System.Runtime.InteropServices;
using System.Runtime.CompilerServices;

public static class Program
{
    public static async Task Main(string[] args)
    {
        #if !CONFIGURED
        #error Define CONFIGURED before compiling
        #endif
        Console.WriteLine("Configured");
    }
}

Official source: Microsoft Learn.

Clone this wiki locally