Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2008, 17:28   #1
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Сообщений: 476
По умолчанию запуск файла С#

запускаю компилятор tasm.exe c параметрами /zi /z s
где, s - путь к файлу который нужно скомпилировать (без расширения, компилятор сам выбирает расширение)
через эту сроку:
Process.Start("tasm.exe", "/zi /z "+s);

в результате чего создаётся скомпилированный файл с расширением obj

далее

запускаю компилятор tlink.exe c параметрами /v /x s
Process.Start("tlink.exe", "/v /x " + s);
где, s - путь к файлу который нужно скомпилировать (без расширения, компилятор сам выбирает obj файл)

в результате должен создаться exe файл программы
второй компилятор запускается, но exe файл не компилируется

проверял на другом компьютере - компилируется... в чём может быть проблема...
в обоих случаях s = G:\ASM\pr1
Life if about choices
Make the right choice
TaTT DoGG вне форума Ответить с цитированием
Старый 22.11.2008, 17:32   #2
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Сообщений: 476
По умолчанию

проблему нашел, но не знаю почему так получается...
если компилировать из C# то exe не создаётся
если закрыть C# и запустить программу, то exe скомпилируется
может где-нибудь нужно галку поставить, чтобы exe компилировался?
Life if about choices
Make the right choice
TaTT DoGG вне форума Ответить с цитированием
Старый 22.11.2008, 18:09   #3
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Выходные пути не заданы. obj-файл помещается в текущий каталог (скорее всего каталог, где лежит exe-файл проекта), поэтому tlink его не находит.

Добавьте еще указание пути выходных файлов:
Process.Start("tasm.exe", "/zi /z "+s+" ,"+s);
Process.Start("tlink.exe", "/v /x " + s+" ,"+s);
alexBlack вне форума Ответить с цитированием
Старый 22.11.2008, 18:12   #4
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Сообщений: 476
По умолчанию

благодарю
Life if about choices
Make the right choice
TaTT DoGG вне форума Ответить с цитированием
Старый 24.11.2008, 02:35   #5
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Сообщений: 476
По умолчанию

с каким параметром нужно запускать файл, чтобы окна не было видно?
Life if about choices
Make the right choice
TaTT DoGG вне форума Ответить с цитированием
Старый 24.11.2008, 08:37   #6
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Посмотрите пример:

Код:
            Process p = new Process();
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.FileName = "cmd.exe";
            p.StartInfo.Arguments = @"/c dir c:\windows /w";
            p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            p.Start();

           // А это на Ваш второй вопрос - про чтение вывода 
            string s = p.StandardOutput.ReadToEnd();
            p.WaitForExit();

            Console.WriteLine(s);
alexBlack вне форума Ответить с цитированием
Старый 24.11.2008, 17:03   #7
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Сообщений: 476
По умолчанию

делаю так:
Код:
Process p = new Process();
            p.StartInfo.UseShellExecute = true;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.FileName = "tasm.exe";
            p.StartInfo.Arguments = @"/zi /z " + s + ".asm >> tasm.txt";
            p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            p.Start();
            string f = p.StandardOutput.ReadToEnd();
            p.WaitForExit();
            MessageBox.Show(f);
виснет...
Life if about choices
Make the right choice
TaTT DoGG вне форума Ответить с цитированием
Старый 24.11.2008, 19:53   #8
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Цитата:
Сообщение от TaTT DoGG Посмотреть сообщение
делаю так:

виснет...
Виснет ? или:

Цитата:
Unhandled Exception: System.InvalidOperationException: The Process object must have the UseShellExecute property set to false in order to redirect IO streams...
p.StartInfo.UseShellExecute = false;

и уже как-то определитесь. Или RedirectStandardOutput или перенаправление >>. Не нужно делать все сразу. Кстати, Ваш код у меня работает (c UseShellExecute = false). Вывод естественно в t.asm.
alexBlack вне форума Ответить с цитированием
Старый 24.11.2008, 22:08   #9
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Сообщений: 476
По умолчанию

Код:
Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = "tasm.exe";
p.StartInfo.Arguments = @"/zi /z " + s + ".asm";
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p.Start();
string f = p.StandardOutput.ReadToEnd();
textBox3.Text = f;
p.WaitForExit();
Код:
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
не работает теперь - показывает окно

в textBox3.Text ничего не выводится...
Life if about choices
Make the right choice
TaTT DoGG вне форума Ответить с цитированием
Старый 24.11.2008, 23:01   #10
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Сообщений: 476
По умолчанию

решил отдельно проект создать:
вот код:
Код:
using System;
using System.IO;
using System.Windows.Forms;
using System.Diagnostics;

namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();         
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string t = Directory.GetCurrentDirectory();
            Process p = new Process();
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.FileName = t+@"\TASM.EXE";
            p.StartInfo.Arguments = @"/zi /z "+t+@"\PR1.ASM";
            p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            p.Start();
            string f = p.StandardOutput.ReadToEnd();
            textBox1.Text = f;
            p.WaitForExit();            
        }
    }
}
при нажатии на кнопку выбивает сообщение в строке p.Start();
Life if about choices
Make the right choice
TaTT DoGG вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запуск файла на исполнение Doloto Общие вопросы C/C++ 4 03.04.2008 01:15
Прописать запуск exe-файла Manitu Помощь студентам 4 07.03.2008 10:31
Запуск exe-файла из приложения TerVovik Помощь студентам 4 12.12.2007 16:21
Запуск файла по пути John_chek Общие вопросы Delphi 3 29.05.2007 12:38
запуск некоего файла Viten2 Общие вопросы Delphi 4 29.01.2007 20:04