【问题标题】:Visual Studio - Error in post-build with exeVisual Studio - 使用 exe 进行后期构建时出错
【发布时间】:2014-03-21 08:49:36
【问题描述】:

如果我想在 Visual Studio 2012 中的 C# 项目的构建后事件中运行一个简单的程序,Visual Studio 将失败并显示错误“从命令 c:\test.exe 退出,代码为 -532462766”。

“test.exe”程序很简单:

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

但是,如果我删除“ReadKey()”,它会运行而不会出错。 谁能解释一下怎么回事?

【问题讨论】:

  • 你确定这个错误不会在其他地方引发吗?
  • 我认为是的,因为如果我从其他地方运行 C:\test.exe,它运行时不会出错。
  • 为什么要在构建后事件中读取密钥?运行构建后事件时,您无法与用户交互
  • 例如因为我想在控制台中读取一条消息。但是,无论如何..忘记“为什么我应该阅读密钥”,让我们专注于“为什么 VS 失败”
  • 那你看看这个帖子有没有帮助stackoverflow.com/questions/19320266/…

标签: c# visual-studio-2012 post-build-event


【解决方案1】:

退出代码是 0xe0434352,“CCR”异常是触发 .NET 程序中托管异常处理的非托管异常。您的代码中没有 try/catch,也没有 AppDomain.CurrentDomain.UnhandledException 的事件处理程序,所以除了“它崩溃”退出代码之外,您什么也看不到。

这对于您在构建前/构建后事件中运行的代码来说是正常的。此类代码在沙箱中运行,该沙箱试图破坏您正在尝试做的事情,任何会导致构建因“按 Enter 继续”样式交互而停止的事情。非常重要的是,没有人喜欢在构建服务器上进行 30 小时的构建来停止这样的事情。你可以捕获异常,你会得到一个 InvalidOperationException:

当任一应用程序没有控制台或控制台输入已从文件重定向时,无法读取密钥。试试 Console.Read

这是好的建议,您的程序将不再崩溃。但也不会停止,Console.Read/Line() 当然也被打败了。这个功能非常扎实。我只需要这样做一次,我想出的唯一方法是 Thread.Sleep()。

当你在罗马时,表现得像个罗马人。将输出重定向或写入文件,以便在构建完成后稍后读取。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-15
    • 1970-01-01
    相关资源
    最近更新 更多