Всем доброе утро, день, вечер, ночь!
Бывает встречаются случаи, когда Вам необходимо откомпилировать код так, чтобы для разных конфигураций одни участки кода компилировались, а другие – нет. Именно для этого и существуют в языке C# директивы препроцессора, которые позволяют управлять компиляцией кода. Вообще, такая “вещь” существует не только в языке C#, а почти во всех серьезных (промышленных) языках программирования. Об условиях компиляции в языке C# эта заметка и написана.
Если файлов проекта не много, то можно обойтись следующим способом:
Вначале нам надо задать все имена требуемых условий компиляции. Таким образом мы задаем имена только для того, чтобы в коде обозначить участки кода, которые должны будут компилироваться при активации требуемого определения.
Вот пример кода: 1: #define CompanyA
2: //#define CompanyB
3:
4: using System;
5:
6: namespace ConsoleApplication2
7: {
8: class Program
9: {
10: static void Main(string[] args)
11: {
12: #if CompanyA
13: Console.WriteLine("this is CompanyA cofiguration");
14: #endif
15:
16: #if CompanyB
17: Console.WriteLine("this is CompanyB cofiguration");
18: #endif
19:
20: Console.Read();
21: }
22: }
23: }
В данном случае откомпилируется тока области, помеченные как #if CompanyA - #endif. Если необходимо откомпилировать области помеченные как #if CompanyB - #endif, необходимо закомментировать определение #define CompanyA и разкомментировать #define CompanyB.
Если необходимо применить имя условия в рамках всего проекта, то в свойствах проекта укажите имя области в текстовом поле Conditional compilation symbols (Символы условной компиляции), расположенным на вкладке Build (Сборка) страницы Properys (Свойства) проекта:
Кстати, при подходе через указания имени условия в свойстве проекта, в коде имена через директивы #define определять не надо.
Вот такими не сложными действиями, мы можем говорить компилятору, что компилировать надо, а что наоборот, он “видеть” не должен.
Полезные ссылки:
Полезные ссылки:
я через Mono (реализацию .NET в Linux) позапускал программы. прикольно!
ОтветитьУдалитьможно сделать чтобы проект, написанный на C#, скомпилился в единый файл, не требующий в Linux никаких библиотек и дополнительных файлов.
вообщем, из того что прочёл - C# мне нравится ... хоть и чуток не православно для линуксоида =)
Тоже писал один подпроект на Mono в помощь людям под Linux. Там для загрузки файлов на web-сервер через php-скрипт. По производительности вроде не медленный.
ОтветитьУдалитьА вот Monolight (Их реализация Silverlight-платформы .NET'а) по производительности сильно проигрывает оригиналу. Причем это видно и не вооруженным взглядом.
P.S.: Обычно все линуксоиды на дух не переносят коммерческих компаний (особенно MS) и их продуктов. =)