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().
Когда вы в Риме, ведите себя как римлянин. Перенаправить или записать вывод в файл, чтобы его можно было прочитать позже, после завершения сборки.