C# 我可以在不编译整个项目的情况下从即时窗口调用C函数吗?

C# 我可以在不编译整个项目的情况下从即时窗口调用C函数吗?,c#,visual-studio,visual-studio-debugging,read-eval-print-loop,immediate-window,C#,Visual Studio,Visual Studio Debugging,Read Eval Print Loop,Immediate Window,回到VB6时代,我可以使用即时窗口对函数运行快速的健全性测试,即使我的其余代码处于中断状态: 它对于快速而肮脏的REPL调试非常方便 在VisualStudio中编写C代码时,我不能从即时窗口调用任何代码,除非所有代码都有效并已编译 当我的项目处于“准备运行”状态时,这很好,但当我正在分解一堆代码时就不行了 有没有办法将立即窗口配置为只编译我试图执行的语句所需的内容?还是其他解决办法 我听说LINQPad非常棒,但我认为在运行它之前,需要复制粘贴测试语句所依赖的所有代码。我也玩过较新的交互式窗口

回到VB6时代,我可以使用即时窗口对函数运行快速的健全性测试,即使我的其余代码处于中断状态:

它对于快速而肮脏的REPL调试非常方便

在VisualStudio中编写C代码时,我不能从即时窗口调用任何代码,除非所有代码都有效并已编译

当我的项目处于“准备运行”状态时,这很好,但当我正在分解一堆代码时就不行了

有没有办法将立即窗口配置为只编译我试图执行的语句所需的内容?还是其他解决办法


我听说LINQPad非常棒,但我认为在运行它之前,需要复制粘贴测试语句所依赖的所有代码。我也玩过较新的交互式窗口,但我认为它没有达到我想要的效果。

从你上面的评论中,你已经找到了答案:C交互式窗口视图|其他窗口| C交互式是你想要的功能。如果由于存在项目错误,即时窗口无法运行您想要运行的代码,那么C Interactive将运行。VisualStudio的C交互窗口实际上与VB6的即时窗口的工作方式相同。C Interactive窗口将成功编译并运行不依赖于错误状态项目代码的代码:

就像在VB6中一样,您将无法从项目代码中访问未编译的函数或变量,正如其他人所指出的,如果编译器必须依赖无法编译的代码,它将如何在任何即时窗口模式下工作?正如我上面的图片所证明的,只要您提供给C交互式窗口的代码是可编译的,即使您的项目代码不是可编译的,它也可以工作

只要您避开任何可能依赖于项目代码的代码,您甚至可以编译更复杂的示例,如下所示:


但是,与VB6的即时窗口不同,VB6的即时窗口是Visual Studio的即时窗口与Visual Studio的C/F交互窗口的一种纯VB混合,您不能引用项目代码中存在的值,因为C/F交互窗口是沙盒。因此,在所示的示例中,我无法访问C交互式窗口中的ggc.Name,该窗口无法访问任何项目变量或说明项目是否存在编译错误。

我目前的“解决方案”是注释掉已损坏的代码,这很糟糕。如何排除正在破坏生成的文件?右键单击该文件,选择“从项目中排除”将上次编译的dll导入LINQPad,以便您可以访问其中的函数?这意味着什么:我还使用了较新的交互式窗口….?我并不真正了解您的问题陈述-您希望在隔离状态下快速脏测试某些内容,但也希望它能够以某种方式访问您的所有功能编写代码并在代码被破坏时运行其中的任何内容?是否有机会获得除Hello之外的更好的示例?关键是,即使当前项目存在阻止其编译的错误,C Interactive窗口也会编译代码。我添加了一个更具说明性的示例。非常好。现在大家都知道了。感谢更新+1,但如果您想在其中使用类,则必须编译该类。。它不会也可能永远不会完全像VB6示例那样。有一些使用技巧-您可以看到如何将代码发送到InWin进行检查,但它所依赖的一切都需要工作,并且导入对当前项目的引用有点困难awkward@CaiusJard当前位置我在最后一段补充了我的答案以提供更详细的信息。