【问题标题】:How to make a clickable C# Console output line like in Unity?如何像在 Unity 中一样制作可点击的 C# 控制台输出行?
【发布时间】:2022-08-12 11:10:14
【问题描述】:

Unity Game Engine 在其控制台中有一个非常有用的功能,您可以在其中单击输出中的任何行,它会将您带到生成它的源代码行。

例如

Debug.Log(\"test\");(Test.cs 中的第 20 行)

将输出

test

双击 test,将带您回到 IDE 中 Test.cs 的第 20 行。

我想知道,在正常的 C# 开发中是否有某种方法可以做到这一点?我正在使用 Rider IDE,但我怀疑这是某种超链接,而不是依赖于 IDE 的东西。虽然也许这并不准确。

  • 您可以检查 Unity 的参考代码github.com/Unity-Technologies/UnityCsReference 中是否显示了这一点
  • 这回答了你的问题了吗? Is there a way to use hyperlink in Unity\'s console?
  • @mcky 不,我正在尝试在统一之外执行此操作,但从中借用了一些不错的功能。
  • @LexLi 这是一个有用的建议。当我有机会完善它时,我会尝试更多的东西并发布答案。谢谢
  • 您可以将堆栈跟踪复制到剪贴板并调用操作在 Rider 中分析堆栈跟踪

标签: c# unity3d debugging console rider


【解决方案1】:

不幸的是,当前的 Windows 终端不支持可点击的链接。但是,这是计划中的feature for WT 2.0。阅读here 以获取拉取请求。如果您只是为自己做一个项目,您也许可以建立他们的开发分支。

现在,你显然可以用参数打开你的想法,但我认为这是你唯一的选择。

编辑:

@LexLi 有一个很棒的评论 referencing this 这是一个“用于创建基于控制台的 GUI 应用程序的 .NET 框架”。这带来了一个很好的观点,你可以完全自己听点击。

【讨论】:

【解决方案2】:

我设法很好地解决了这个问题。这搭载 Jetbrains IDE 解析控制台,并创建路径链接。我不确定这是否适用于其他 IDE,但它实际上对我想要的效果非常好。

const string ProjectFolder = "MyProject/";
    
public static void Log(string message,
    [CallerMemberName] string callingMethod = "",
    [CallerFilePath] string callingFilePath = "",
    [CallerLineNumber] int callingFileLineNumber = 0)
{

    string pathFromProjectFolder = callingFilePath.Split(ProjectFolder).LastOrDefault();
    Console.WriteLine($"{message}   {pathFromProjectFolder}:{callingFileLineNumber} ");
}

调用此方法会在 Rider 的控制台中生成类似的内容。

【讨论】:

    猜你喜欢
    • 2018-12-13
    • 1970-01-01
    • 2020-09-07
    • 1970-01-01
    • 1970-01-01
    • 2013-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多