Пишем билдер C# вариант 1

R

rif009

Original poster
Бывает такое что программист сталкивается с такой проблемой что под каждого человека нужно создавать отдельную сборку,
притом в коде меняется только значения некоторых переменных. Для таких случаев создают Bilder` ы которые позволяют экономить время.
В данной статье я хочу показать один из способов создание билдов на нашем любимом языке c#.

Слава нашему монстру что шарп предоставляет возможность динамической компиляции а именно мы познакомимся с пространством имен System.CodeDom
с помощью него мы можем компилировать код прям из нашей сборки.

Создадим функцию которой мы будем в формате string передавать 2 параметра ,первый это непосредственно сам исходный код нашей программы и второй
это указываем директорию с названием для будущего билда.
Создадим новый экземпляр класса который позволяет нам компилировать заранее указав что компилируем шарп (для VB.Net используется new VBCodeProvider())
C#:
 CodeDomProvider compiler = new CSharpCodeProvider();
Так же нам нужно создать еще экземпляр класса который позволяет указать параметры, используемые для вызова компилятора.
C#:
 CompilerParameters Params = new CompilerParameters();
А дальше преступим непосредственно заданию параметров.
Укажем директорию с именем будущего билда.
C#:
Params.OutputAssembly = fileName;
Добавим необходимые ссылки
C#:
  Params.ReferencedAssemblies.Add("System.dll");
По желанию можно добавить параметров компиляции например создать приложение windowsform
C#:
Params.CompilerOptions += "/t:winexe";
Так же надо обязательно указать что компилируем исполняемый файл ибо по дефолту будет dll
C#:
Params.GenerateExecutable = true;
Под конец вызываем метод компиляции и проверяем на наличие ошибок если же они присутствуют выведем на экран
В итоге получим такую функцию
da0567748a137e47d3881ed0ecc5a6a0.png


Для тестового проекта я добавил в ресурсы текстовый файл со след содержанием.
0290b4cc65a450126e0bdc70ef178e6f.png

Обратим внимание на {TEXT} именного его я планирую заменять в каждом билде.
Кинем на форму кнопку и пару полей
78b94c9af3756336b8fbdd251e040673.png

Первое поле будем использовать чтоб получить текст который будем использовать для замены {TEXT},а второе для вывода ошибок.
И последний на сегодня код это код на событие нажатия на кнопку.
9fc521e29a839ca60b51952e92d089ee.png

Собственно где мы получаем из ресурсов текст исходного кода и делая замену {TEXT} с помощью метода Replace на указанный пользователем текст вызываем нашу функцию для компиляцию.
При отсутствие ошибок радуемся полученной сборке^^

© rif009 2016

Скачать исходник

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.

 
S

Secruity(ушел в подполье)

Original poster
Скажи,а большая разница в коде с# и с++*?
хочу начать кодить,что выбрать?)
 
Название темы
Автор Заголовок Раздел Ответы Дата
Ёшкин_кот Интересно Пишем любой текст на листочке который держит обнажённая девушка. 18+ Свободное общение и флейм 0
Ёшкин_кот Интересно Пишем вредоносное ПО с помощью ChatGPT. Формат mp4. English-speaking. Полезные статьи 0
A Пишем свой RAT на Python > {Часть 1} Уязвимости и взлом 3
U Интересно PHP - Пишем свой фишинг скрипт для кражи тт аккаунтов {Уровень: EASY} Другие ЯП 10
L Интересно C# - Пишем Watchdog (Модуль защиты вашего трояна) .NET 2
K Интересно [Roman Akhromieiev] Telegram. Пишем ботов на Node JS и Telegraf (2020) Другое 1
sxkury Пишем малютку для скана сайта Софт от наших юзеров 6
АнАлЬнАя ЧуПаКаБрА Интересно Пишем брут на любой(почти) банк [OFX] Другие ЯП 1
S Пишем свой перехватчик СМС Android Другие ЯП 3
T Пишем WinLocker на Delphi С/C++ 0
N Пишем отзывы и получаем от 200 рублей в день. Способы заработка 12
G Пишем парсер на Python - грабим Proxy ч.2 Бруты/Парсеры/Чекеры 0
G Пишем парсер на Python - грабим Proxy ч.1 Бруты/Парсеры/Чекеры 2
G Пишем скрипт для работы с VirusTotal-ом Полезные статьи 0
G Пишем шифровальщик на python Полезные статьи 0
Traven Пишем спамер Telegram, на Python Другое 0
Traven Пишем свой стиллер на Python Другие ЯП 4
Traven WinLocker на python. Пишем вирус. Другое 0
V Пишем переносной кейлоггер на C++ Полезные статьи 1
O Пишем стиллер на Batch Вирусология 15
A Delphi для начинающих – Урок 6 – Пишем свой калькулятор С/C++ 0
E [PHP] Пишем свой движок 2.0 Другие ЯП 0
Glods Пишем многопоточный Brute С/C++ 0
К Продам Продам интернет магазины сладостей вк и инстаграме. Отличный вариант для скама на новогодних подарках. Все что не подошло по разделу 0
P Интересный вариант заработка на Авито Способы заработка 2

Название темы