如果我在典型的 PS 窗口中键入以下代码,我可以在输出中正确地获得“asdf”:
[System.Console]::WriteLine("asdf")
但是,如果我在 NuGet 包管理器控制台中执行此操作,则不会输出任何内容。谁能告诉我为什么?
如果我在典型的 PS 窗口中键入以下代码,我可以在输出中正确地获得“asdf”:
[System.Console]::WriteLine("asdf")
但是,如果我在 NuGet 包管理器控制台中执行此操作,则不会输出任何内容。谁能告诉我为什么?
因为 NPM 不是控制台应用程序。它托管在 Visual Studio 中并实现 PowerShell 主机接口以允许 PowerShell 引擎将输出显示到可能的 WPF 窗口。
要在 NPM 中获取输出,请使用:
Write-Host "asdf"
或者干脆
"asdf"
如果不在 cmdlet 中,您可以执行以下操作:
private void WriteHost(string message)
{
var runspace = Runspace.DefaultRunspace;
var pipeline = runspace.CreatePipeline("Write-Host '" + message + "'", false);
pipeline.Invoke();
}