在Java中,您可以使用System.out.println(message)
将消息打印到输出窗口。
Visual Studio中的等价物是什么?
我知道当我处于调试模式时,我可以使用它在输出窗口中查看消息:
Debug.WriteLine("Debug : User_Id = "+Session["User_Id"]);
System.Diagnostics.Trace.WriteLine("Debug : User_Id = "+Session["User_Id"]);
如果不在Visual Studio中进行调试,如何才能完成此操作?
答案 0 :(得分:27)
结果不在输出窗口中,而是在测试结果详细信息中(底部的TestResult窗格,右键单击测试结果并转到TestResultDetails)。
这适用于Debug.WriteLine和Console.WriteLine。
答案 1 :(得分:20)
即使您没有处于调试模式,跟踪消息也可以出现在输出窗口中。 您只需确保定义了TRACE编译器常量。
答案 2 :(得分:13)
Trace.WriteLine方法是一种有条件编译的方法。这意味着只有在编译代码时定义TRACE常量时才会执行它。默认情况下,在Visual Studio中,TRACE仅在DEBUG模式下定义。
右键单击“项目”并选择“属性”。转到“编译”选项卡。选择Release模式并将TRACE添加到定义的预处理器常量。那应该为你解决问题。
答案 3 :(得分:7)
这整个线程让h#$ l感到困惑,直到我意识到 你必须运行调试器才能看到任何跟踪或调试输出 。我需要一个调试输出(在调试器之外),因为我的WebApp在调试时运行正常,但在调试器未运行时运行不正确(SqlDataSource在运行调试器时正确实例化)。
只是因为当您在发布模式下运行时可以看到调试输出 不 意味着如果您没有运行调试器,您将看到任何内容。仔细阅读Writing to output window of Visual Studio?可以让我DebugView作为替代方案。 非常有用!
希望这有助于其他人对此感到困惑。
答案 4 :(得分:1)
对我来说,这就是debug.writeline在立即窗口中显示的事实,而不是输出。我默认安装VS2013甚至不显示打开立即窗口的选项,因此您必须执行以下操作:
Select Tools -> Customize
Commands Tab
View | Other Windows menu bar dropdown
Add Command...
The Immediate option is in the Debug section.
一旦你有了,那你可以去看看 - >其他Windows并选择立即窗口,嘿presto可以看到所有的调试输出。
对我来说不幸的是,它还显示了我在项目中没有意识到的大约50个错误......也许我只是再次关闭它: - )
答案 5 :(得分:1)
要在Visual Studio输出窗口中编写,我使用了IVsOutputWindow
和IVsOutputWindowPane
。我在OutputWindow
课程中包含了成员,如下所示:
public class OutputWindow : TextWriter
{
#region Members
private static readonly Guid mPaneGuid = new Guid("AB9F45E4-2001-4197-BAF5-4B165222AF29");
private static IVsOutputWindow mOutputWindow = null;
private static IVsOutputWindowPane mOutputPane = null;
#endregion
#region Constructor
public OutputWindow(DTE2 aDte)
{
if( null == mOutputWindow )
{
IServiceProvider serviceProvider =
new ServiceProvider(aDte as Microsoft.VisualStudio.OLE.Interop.IServiceProvider);
mOutputWindow = serviceProvider.GetService(typeof(SVsOutputWindow)) as IVsOutputWindow;
}
if (null == mOutputPane)
{
Guid generalPaneGuid = mPaneGuid;
mOutputWindow.GetPane(ref generalPaneGuid, out IVsOutputWindowPane pane);
if ( null == pane)
{
mOutputWindow.CreatePane(ref generalPaneGuid, "Your output window name", 0, 1);
mOutputWindow.GetPane(ref generalPaneGuid, out pane);
}
mOutputPane = pane;
}
}
#endregion
#region Properties
public override Encoding Encoding => System.Text.Encoding.Default;
#endregion
#region Public Methods
public override void Write(string aMessage) => mOutputPane.OutputString($"{aMessage}\n");
public override void Write(char aCharacter) => mOutputPane.OutputString(aCharacter.ToString());
public void Show(DTE2 aDte)
{
mOutputPane.Activate();
aDte.ExecuteCommand("View.Output", string.Empty);
}
public void Clear() => mOutputPane.Clear();
#endregion
}
如果您要在输出窗口中写入大文,通常不想冻结UI。为此,您可以使用Dispatcher
。要使用此实现在输出窗口中编写内容,您现在可以简单地执行此操作:
Dispatcher mDispatcher = HwndSource.FromHwnd((IntPtr)mDte.MainWindow.HWnd).RootVisual.Dispatcher;
using (OutputWindow outputWindow = new OutputWindow(mDte))
{
mDispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() =>
{
outputWindow.Write("Write what you want here");
}));
}