Visual Studio - Ошибка в пост-сборке с exe

Если я хочу запустить простую программу в событиях после сборки проекта C# в Visual Studio 2012, Visual Studio завершается с ошибкой "Выход из команды c:\test.exe с кодом -532462766".

Программа test.exe проста:

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("ciao");
        Console.ReadKey();
    }
}

Но если я удаляю ReadKey(), он запускается без ошибок. Может кто-нибудь объяснить мне, что не так?

1 ответ

Код выхода - 0xe0434352, исключение "CCR", которое является неуправляемым исключением, которое запускает управляемую обработку исключений в программе.NET. В вашем коде нет try/catch и нет обработчика событий для AppDomain.CurrentDomain.UnhandledException, так что вам не на что смотреть, кроме кода выхода "сбой".

В остальном это нормально для кода, который вы запускаете в событии до / после сборки. Такой код запускается в изолированной программной среде, которая пытается победить то, что вы пытаетесь сделать, все, что может привести к остановке сборки при взаимодействии в стиле "нажмите Enter для продолжения". Очень важно, что никому не нравится 30-часовая сборка на сервере сборки, чтобы остановить что-то подобное. Вы можете поймать исключение, вы получите InvalidOperationException:

Невозможно прочитать ключи, когда ни одно из приложений не имеет консоли или когда ввод с консоли был перенаправлен из файла. Попробуйте Console.Read

Это хороший совет, ваша программа больше не будет зависать. Но и не остановится, Console.Read/Line(), конечно, также потерпел поражение. Эта особенность довольно солидна. Мне нужно было сделать это только один раз, и единственный способ, которым я придумал, был Thread.Sleep().

Когда вы в Риме, ведите себя как римлянин. Перенаправить или записать вывод в файл, чтобы его можно было прочитать позже, после завершения сборки.

Другие вопросы по тегам