Архив Тэгов: условная компиляция

.Net Программирование

Условная компиляция C#

Столкнулся с задачей, сделать спец версию своего продукта, которая будет отличаться от исходной, всеголишь заменой парой строк. Естевственно создавать копию всего проекта мне не хотелось и тут на помощь пришла так называемая условная компиляция. И так разберемся, что же это такое.
Условная компиляция – это процесс, в котором условные конструкции препроцессора позволяют компилировать или пропускать часть программы в зависимсти от выполнения некоторого условия. Т.е. простыми словами перед компиляцией наш файл может подставлять нужный нам вариант кода.
Например:
Пусть у нас есть такое простейшее консольное приложение

using System;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("this is standard version cofiguration");
            Console.Read();
        }
    }
}

И нам необходимо сделать версию программы, в которой будет меняться только вывод сообщения, для этого добавляем определение имени через директиву #define и добавляем директивы условия #if #else #endif

 #define SpecialVersion
 using System;
 
 namespace ConsoleApplication1
 {
     class Program
     {
         static void Main(string[] args)
         {
             #if SpecialVersion
                 Console.WriteLine("this is special version cofiguration");
             #else
                 Console.WriteLine("this is standard version cofiguration");
             #endif
             Console.Read();
         }
     }
 }

В данном случае у нас внутри функции Main скомпилируется только код

Console.WriteLine("this is special version cofiguration");
Console.Read();

Т.е. итоговый код, который будет компилироваться получится таким:

using System;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("this is special version cofiguration");
            Console.Read();
        }
    }
}

Если необходимо применить имя условия в рамках всего проекта, то в свойствах проекта укажите имя области в текстовом поле Conditional compilation symbols (Символы условной компиляции), расположенным на вкладке Build (Сборка) страницы Properties (Свойства) проекта:
570ec03fdba19d107930dff258be4205[1]

Если мы указываем имя условия в свойстве проекта, то в коде программы определять имена через директивы #define не надо.