雑記 |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Visual Basic 中学校 > 雑記 >
この記事が対象とする製品・バージョン
![]() |
Visual Studio 2019 | ◎ | 対象です。 |
![]() |
Visual Studio 2017 | ◎ | 対象です。 |
![]() |
Visual Studio 2015 | ◎ | 対象です。 |
![]() |
Visual Studio 2013 | ◎ | 対象です。 |
![]() |
Visual Studio 2012 | ◎ | 対象です。 |
![]() |
Visual Studio 2010 | ◎ | 対象です。 |
![]() |
Visual Studio 2008 | ◎ | 対象です。 |
![]() |
Visual Studio 2005 | ◎ | 対象です。 |
![]() |
Visual Studio 2003 | ◎ | 対象です。 |
![]() |
Visual Studio (2002) | ◎ | 対象です。 |
この表はデフォルトの場合です。プログラムや設定で出力先や出力有無を変更している場合は、この表とは異なる結果になります。
ここでは代表してWriteLineメソッドを取り上げていますが、出力先に関してはWriteメソッドやPrintメソッドなどその他の出力メソッドでも同じです。
Debug.WriteLineはDebugビルドを実行している場合でないと表示されません。
なお、「出力ウィンドウは」は[表示]メニューから[出力]で表示できます。
Console.WriteLineの出力先 | Debug.WriteLineの出力先 | |
---|---|---|
コンソールアプリケーションの場合 | コンソールウィンドウ![]() |
出力ウィンドウの 出力元 デバッグ![]() |
Windowsフォームアプリケーション /WPFアプリケーションの場合 |
出力ウィンドウの 出力元 デバッグ![]() ※exeを直接実行している場合どこにも出力されません。(参考1) |
出力ウィンドウの 出力元 デバッグ![]() |
Webアプリケーションの場合 | どこにも出力されません。(脚注1) ※WebアプリケーションではConsole.WriteLineを使用しないでください。(参考2) |
出力ウィンドウの 出力元 デバッグ![]() |
脚注1:Webサーバーの標準出力を見る方法がある場合、Webサーバーの標準出力として出力されているかもしれません。たとえば、コマンドからWebサーバーを起動したり、Webサーバーの標準出力がファイルにリダイレクトされている場合。
下記の記事では Debug.WriteLine,Debug.Printの出力先を大きな画像で初心者にわかりやすく示しています。後輩や初心者の方に案内するときに利用してください。
Debug.WriteLineやDebug.Printが表示される場所
この記事を作成するにあたり私が実際に試した環境
C#の場合
Console.WriteLine("TEST"); System.Diagnostics.Debug.WriteLine("DEBUG"); |
Visual Basicの場合
Console.WriteLine("TEST") Debug.WriteLine("DEBUG") |
古いバージョンのVBではDebug.WriteLineは System.Diagnostics.Debug.WriteLineと書く必要があるようです。(2002ではその必要がありました。2010ではその必要はありませんでした。あくまでの既定値で使用する場合の話です。)
.NETの仕様ではConsoleクラスはコンソールアプリケーション向けの標準出力・標準入力・エラー出力を表しています(参考3)。この3つの入出力はOSが用意している入出力のチャンネルのことです。
Visual Studioがアプリケーションを実行するときにこのチャンネルをどのように割り当てるかは.NETの仕様ではなくVisual Studioの仕様です。残念ながらVisual Studio自体の仕様書は公開されておらず具体的にどこに割り当てられるのか仕様から特定することはできません。
私が知っている項目を挙げます。他にもあるかもしれません。Visual Studio等のバージョンによっても異なるかもしれません。この内容はVisual Studio 2019で確認しました。
参考1 MSReference
Calls to methods such as Console.Write and Console.WriteLine have no effect in GUI applications.
私訳:Console.WriteやConsole.WriteLineのようなメソッドの呼び出しはGUIアプリケーションではなんの効果もありません。
参考2 MSReference
Do not use the Console class to display output in unattended applications, such as server applications.
私訳:サーバーアプリケーションのように自動で実行されているアプリケーションでは出力を表示するためにConsoleクラスを使用しないでください。
参考3 MSReference
Represents the standard input, output, and error streams for console applications.
私訳:コンソールアプリケーション向けの標準入力、標準出力、エラーストリームを表します。
出典1 MSReference