Всем привет, думаю каждый из вас пользовался программой так называемой "Билдером", она создавала исполняемые файлы (.exe) с учётом наших данных.
Т.к. авторам некоторых программ просто рутинно для каждого юзера менять пару строк кода и компилировать заново, они пользуются методом создания builder-a для готовой программы.
Тут я опишу, как написать свой билдер на C#.
Нам потребуется
1. Microsoft Visual Studio с дистрибутивом C#
2. Исходный код программы в текстовом формате (файлик .txt например).
3. Базовые знания о C#
Итак
1. Создадим Window Forms приложение. Кинем на него нужные лабелы/текст боксы.../ и самое важное - КНОПКУ. Скрин
[Ссылки могут видеть только зарегистрированные пользователи. ]
2. Кинем наш исходный код в ресурсы программы.
Вот например мой код:
Код:
using System;
using System.Windows.Forms;
using System.Text;
namespace WhoWantBees
{
class Program
{
static public string messageToWorld = "Nickitee";
static void Main(string[] args)
{
MessageBox.Show(messageToWorld + " want do the harlem shake!");
}
}
}
[Ссылки могут видеть только зарегистрированные пользователи. ]
3. Теперь самое главное, надо сделать исходный файл для компиляции, в принципе он готов, но в нём всё статическое, давайте заменим
Код:
static public string messageToWorld = "Nickitee";
на
Код:
static public string messageToWorld = "[DynamicMessage]";
(Изменения производим в билд файле)
4. Подключим следующее:
Код:
using System.CodeDom.Compiler;
using Microsoft.CSharp;
5. Сам код для компиляции, поставим его на эвент кнопки "Click":
Код:
try
{
CompilerParameters Params = new CompilerParameters();
Params.GenerateExecutable = true;
Params.ReferencedAssemblies.Add("System.dll"); //Добавлем линк в исходный файл на System.dll
Params.ReferencedAssemblies.Add("System.Windows.Forms.dll"); //Тоже самое но на System.Windwos.Forms.dlle
Params.CompilerOptions += "\n/t:winexe"; //Убираем cmd окно путём объявления программы Windows приложением
Params.OutputAssembly = "OpenMe.exe"; //Имя исходного файла
string Source = Properties.Resources.bild; //Путь к файлу с исходниками
Source = Source.Replace("[DynamicMessage]", textBox1.Text);
var settings = new Dictionary<string, string>();
settings.Add("CompilerVersion", "v2.0"); //Указываем версию framework-a 2.0
CompilerResults Results = new CSharpCodeProvider(settings).CompileAssemblyFromSource(Params, Source);
if (Results.Errors.Count > 0)
{
foreach (CompilerError err in Results.Errors)
MessageBox.Show(err.ToString()); //Выводим циклом ошибки, если они есть
}
else
{
MessageBox.Show("Готово, файл появится в том же месте где и программа :)"); //Выводим сообщение что всё прошло успешно
}
}
catch (Exception ex) { MessageBox.Show(ex.Message); }
6. Запускаем, вводим что нам надо в text бокс и жмём Build, запускаем получившийся файл (создастся там где и сама программа).
[Ссылки могут видеть только зарегистрированные пользователи. ]
Гайд подготовил Nickitee специально для Zhyk.ru
Автор не несёт ответственности за пользование информацией
При копировании гайда, указывать автора и первоисточник (Zhyk.ru)
________________
We are Ducks. We are birds. We like bread. We cryack. Cryack.
Последний раз редактировалось Nickitee; 09.03.2013 в 17:47.
Здравствуйте! Честно сказать пришел на данный форум из за вашего урока. Администрация, обратите внимание что Nickitee приносит большую пользу данному ресурсу.
Хотел спросить следующее. Допусти мне нужно кинуть таймер и указать интервал, и естественно код на таймер. Как это реализовать?
Допусти мне нужно кинуть таймер и указать интервал, и естественно код на таймер. Как это реализовать?
Не то что бы я кэп, но вам надо сделать ровно следующее:
Кинуть таймер на форму, указать интервал в настройках и естественно задать ваш код на таймер...
Возникают траблы с подключением внешней библиотеки.
Сам файл компилируется, но при запуске ошибка.
[Ссылки могут видеть только зарегистрированные пользователи. ]
Кто знает как решить?