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

rif009

Pro Member
Сообщения
23
Реакции
20
Посетить сайт
Бывает такое что программист сталкивается с такой проблемой что под каждого человека нужно создавать отдельную сборку,
притом в коде меняется только значения некоторых переменных. Для таких случаев создают 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;
Под конец вызываем метод компиляции и проверяем на наличие ошибок если же они присутствуют выведем на экран
В итоге получим такую функцию


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

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

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

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

© rif009 2016

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

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

 
Название темы
Автор Заголовок Раздел Ответы Дата
LightMan Интересно C# - Пишем Watchdog (Модуль защиты вашего трояна) .NET 1
K Интересно [Roman Akhromieiev] Telegram. Пишем ботов на Node JS и Telegraf (2020) Другое 1
Daniel01 Пишем малютку для скана сайта Софт от наших юзеров 6
АнАлЬнАя ЧуПаКаБрА Интересно Пишем брут на любой(почти) банк [OFX] Другие ЯП 1
shellest Пишем свой перехватчик СМС Android Другие ЯП 2
T0pDro4eR Пишем WinLocker на Delphi С/C++ 0
NikitaBoom Пишем отзывы и получаем от 200 рублей в день. Способы заработка 12
Forevonly Пишем парсер на Python - грабим Proxy ч.2 Бруты/Парсеры/Чекеры 0
Forevonly Пишем парсер на Python - грабим Proxy ч.1 Бруты/Парсеры/Чекеры 2
Forevonly Пишем скрипт для работы с VirusTotal-ом Полезные статьи 0
Forevonly Пишем шифровальщик на python Полезные статьи 0
Traven Пишем спамер Telegram, на Python Другое 0
Traven Пишем свой стиллер на Python Другие ЯП 4
Traven WinLocker на python. Пишем вирус. Другое 0
VLAD1337 Пишем переносной кейлоггер на C++ Полезные статьи 1
OUTCAST Пишем стиллер на Batch Вирусология 15
AngelOfLove Delphi для начинающих – Урок 6 – Пишем свой калькулятор С/C++ 0
eceNin [PHP] Пишем свой движок 2.0 Другие ЯП 0
Glods Пишем многопоточный Brute С/C++ 0
Portret Интересный вариант заработка на Авито Способы заработка 2

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