运行和调试无需源代码的 .NET 可执行文件
如果您需要启动一个已编译的 .NET 可执行文件而无需源代码,您需要在 运行配置中配置目标可执行文件的启动属性。 配置创建后,您可以 附加调试器 Shift+F9 或不进行调试 Shift+F10 地启动它。 在调试的情况下,可执行文件将会被自动 反编译。
另一种情况是将已编译的 .NET 可执行文件用作测试或调试非可执行类型项目(例如类库)的一部分。 在这种情况下,您需要将创建的配置与另一个执行您的代码的配置一起作为 多个目标启动。
为 .NET 可执行文件创建运行配置
通过以下任一方式打开 运行/调试配置 对话框:
请选择 从主菜单。
在 Navigation bar 可见 () 的情况下,从运行/调试配置选择器中选择 。
请按 Alt+Shift+F10 然后按 0。
在 运行/调试配置 对话框中,单击 添加新配置
Alt+Insert ,选择 .NET 可执行文件 配置类型,并指定一个名称,以便您将来识别此配置。
指定目标可执行文件的路径。
(可选)指定在启动配置时将传递给可执行文件的程序参数。 多个参数应以空格分隔。
可选地,指定自定义 工作目录 ,否则将使用目标可执行文件的目录。
可选地,以以下格式为目标可执行文件指定自定义 环境变量。
envVar1=value1;envVar2=value2可选地,指定 .NET 运行时实参。 多个参数应以空格分隔。
.NET 和 Mono 都支持在启动应用程序时设置自定义运行时参数。 例如,Mono 支持 许多运行时参数 ,以自定义您的应用程序运行方式。 您可以选择要使用的垃圾回收器(
--gc=boehm或--gc=sgen),在 macOS 上,您可以选择要使用的运行时架构(--arch=32或--arch=64),以及更多选项。可选地,使用 运行时 选择器选择您机器上可用的运行时之一。
如果您在 Windows 上工作,您可以检查您的应用程序在 Mono 运行时下的运行情况。 JetBrains Rider 将使用在 JetBrains Rider 设置 的 页面上指定的 Mono 可执行文件 Ctrl+Alt+S。
要使用 Mono 运行时进行调试,您需要:
Mono 4.2+
项目中的便携式 PDB —
<debugtype>portable</debugtype>在 .csproj 文件中,或者通过 mdb与 pdb2mdb生成。
(可选)选择 终端模式。 默认会选择 自动的 ,这意味着 JetBrains Rider 会根据项目和 IDE 设置决定最佳终端输出模式。 如有必要,您可以手动选择终端输出模式:
自动的 — Rider 会根据运行配置和可执行文件类型选择最合适的模式。
通常为控制台类程序使用 PTY(伪终端) ,以提供交互式终端体验(进程“认为”它运行在真实终端中;
isatty()为 true;终端控制序列可能有效)。通常为 GUI 程序使用 标准流重定向 (例如,在 Windows 下链接
/SUBSYSTEM:WINDOWS时自动识别),此时不需要终端。注意:默认选项无法避免所有边缘情况(尤其是在 Windows),因此如果输出或交互异常,切换模式可能有帮助。
启用伪终端 — 在伪终端(Windows 下为 PTY / ConPTY)中运行该进程。
最适合需要真实终端的程序:交互式提示、TUI 应用、Shell、readline 风格输入等。
启用“完整终端体验”:
isatty()返回 true,并且支持终端控制序列(如光标移动、清屏等)。已知限制:某些场景下终端仿真可能不可靠(例如某些程序下的表现异常,尤其是 Windows 系统)。
重定向标准流 — 通过重定向捕获
stdin/stdout/stderr,而非在终端中运行。在 Rider 运行窗口中提供基本的文本输出收集功能。
大多数特定于终端的行为不可用:许多应用会把输出视为“非终端”(
isatty()为 false),因此交互功能和终端控制序列通常无法使用。在此模式下,程序的彩色输出通常会减少或被禁用(一般为“无颜色”,除非程序支持在重定向输出中强制颜色)。
使用 ANSI 代码重定向标准流 — 像前一个选项一样重定向流,但允许 ANSI 转义序列通过,实现彩色/样式化输出。
适用于即使输出被重定向也能生成 ANSI 颜色码(或通过配置/环境强制)的程序。
仍然不是真实终端:交互式终端行为通常依然不可用(
isatty()为 false),且除简单样式外的终端控制序列可能无法按预期工作。此模式旨在提升可读性(显示颜色),而无需切换到完整的 PTY 模式。
外部控制台 — 在 Rider 终端窗口外部运行进程。 对于某些因流被重定向而异常(尤其是一些 GUI 程序)的程序,这是推荐的变通方案,例如 GUIConsole.WPF / ConPTY 演示场景等情况。
禁用 — 不将 Rider 的控制台/终端处理附加到运行配置输出。 这对于 GUI 应用程序(不需要重定向终端输出)或任何 Rider 介入输出导致问题的情况都很有用。
默认情况下,.NET 和 Mono 应用程序的输出显示在 运行 或 调试 窗口中。 您可以选择 使用外部控制台 在外部窗口中显示输出。
请注意,此复选框不影响经典 .NET 应用程序类型(例如 .NET 控制台应用程序)——它们的输出始终显示在外部窗口中。
当您以调试模式运行配置时,JetBrains Rider 仅将其调试器附加到原始 .NET 进程。 如果您想调试由原始进程生成的子进程和孙子进程,请选择 附加到子 .NET 进程。
请注意,此选项仅适用于 .NET 8 及更高版本。
点击 Apply 以保存配置。
