0

私は、ユーザー入力を通じて Visual Studio のビルド前/ビルド後に他のプログラムのバージョン管理を処理する小さなサポート コンソール プログラムを作成しました。

つまり、ユーザーは、ビルドのバージョンをどのように変更したいかを尋ねられるはずです。したがって、私のプレ/ポストには、「version.exe $(ProjectDir)」のようなものがあります。

ただし、version.exe次の行への null 参照例外でクラッシュします (矢印で示されています)。

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

ユーザーにプロンプ​​トが表示されることはありません。

なにが問題ですか?

4

1 に答える 1

4

入力ストリームに使用可能なデータがなくなった場合、このConsole.ReadLineメソッドは値を返すことができます。入力を待っているときはいつでも押すことで null、単純なコンソールプログラムからこれをシミュレートできます。Ctrl+Z

ビルドによって開始されたプログラムが、入力ストリームを閉じて入力を許可しない可能性があります。これは、ユーザー入力を待っているビルドをブロックするための予防策です。

これにアプローチするもう 1 つの方法は、MSBuild 設定を使用することです。基本的に、バージョン管理されたビルドとバージョン管理されていないビルドのビルド構成があります。バージョン管理されたビルドが有効な場合にのみ、このビルド ステップを有効にし、ユーザー入力の必要性を取り除きます。

于 2012-07-06T20:28:58.287 に答える