R
rif009
Original poster
Бывает такое что программист сталкивается с такой проблемой что под каждого человека нужно создавать отдельную сборку,
притом в коде меняется только значения некоторых переменных. Для таких случаев создают Bilder` ы которые позволяют экономить время.
В данной статье я хочу показать один из способов создание билдов на нашем любимом языке c#.
Слава нашему монстру что шарп предоставляет возможность динамической компиляции а именно мы познакомимся с пространством имен System.CodeDom
с помощью него мы можем компилировать код прям из нашей сборки.
Создадим функцию которой мы будем в формате string передавать 2 параметра ,первый это непосредственно сам исходный код нашей программы и второй
это указываем директорию с названием для будущего билда.
Создадим новый экземпляр класса который позволяет нам компилировать заранее указав что компилируем шарп (для VB.Net используется new VBCodeProvider())
Так же нам нужно создать еще экземпляр класса который позволяет указать параметры, используемые для вызова компилятора.
А дальше преступим непосредственно заданию параметров.
Укажем директорию с именем будущего билда.
Добавим необходимые ссылки
По желанию можно добавить параметров компиляции например создать приложение windowsform
Так же надо обязательно указать что компилируем исполняемый файл ибо по дефолту будет dll
Под конец вызываем метод компиляции и проверяем на наличие ошибок если же они присутствуют выведем на экран
В итоге получим такую функцию
Для тестового проекта я добавил в ресурсы текстовый файл со след содержанием.
Обратим внимание на {TEXT} именного его я планирую заменять в каждом билде.
Кинем на форму кнопку и пару полей
Первое поле будем использовать чтоб получить текст который будем использовать для замены {TEXT},а второе для вывода ошибок.
И последний на сегодня код это код на событие нажатия на кнопку.
Собственно где мы получаем из ресурсов текст исходного кода и делая замену {TEXT} с помощью метода Replace на указанный пользователем текст вызываем нашу функцию для компиляцию.
При отсутствие ошибок радуемся полученной сборке^^
© rif009 2016
Скачать исходник
притом в коде меняется только значения некоторых переменных. Для таких случаев создают 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");
C#:
Params.CompilerOptions += "/t:winexe";
C#:
Params.GenerateExecutable = true;
В итоге получим такую функцию
Для тестового проекта я добавил в ресурсы текстовый файл со след содержанием.
Обратим внимание на {TEXT} именного его я планирую заменять в каждом билде.
Кинем на форму кнопку и пару полей
Первое поле будем использовать чтоб получить текст который будем использовать для замены {TEXT},а второе для вывода ошибок.
И последний на сегодня код это код на событие нажатия на кнопку.
Собственно где мы получаем из ресурсов текст исходного кода и делая замену {TEXT} с помощью метода Replace на указанный пользователем текст вызываем нашу функцию для компиляцию.
При отсутствие ошибок радуемся полученной сборке^^
© rif009 2016
Скачать исходник