0

我编写了一个小型支持控制台程序,该程序应该通过用户输入在 Visual Studio 的前/后构建中处理其他程序的版本控制。

即用户应该得到提示,他/她想如何对构建进行版本控制。所以在我的前/后我有类似“version.exe $(ProjectDir)”的东西。

但是,version.exe以下行的空引用异常会崩溃(用箭头表示)

var input = Console.ReadLine();
bool result = input.Substring(0,1).ToUpper() == trueKey; <---- input is null

永远不会提示用户。

怎么了?

4

1 回答 1

4

如果输入流没有更多可用数据,该Console.ReadLine方法可以返回一个值。null您可以在一个简单的控制台程序中通过Ctrl+Z在等待输入时点击来模拟它。

由构建启动的程序可能只是通过关闭输入流来禁止输入。这将是构建阻塞等待用户输入的预防措施

解决此问题的另一种方法是使用 MSBuild 设置。本质上具有版本化和非版本化构建的构建配置。仅当启用版本化构建并消除对用户输入的需要时才启用此构建步骤。

于 2012-07-06T20:28:58.287 回答