C# 交互式窗口可以与我的代码交互吗?

Posted

技术标签:

【中文标题】C# 交互式窗口可以与我的代码交互吗?【英文标题】:Can the C# interactive window interact with my code? 【发布时间】:2012-06-23 12:50:20 【问题描述】:

在 Visual Studio 2015 或更高版本中,我可以打开“C# 交互窗口”并运行代码:

> 5 + 3
8

真可爱。现在我如何与我的代码——我的类进行交互?假设我打开了一个项目。

> new Cog()
(1,5): error CS0246: The type or namespace name 'Cog' could not be found (are you missing a using directive or an assembly reference?)

【问题讨论】:

Roslyn 不是交互式窗口。它是 .NET 编译器 API。你确定没有错过吗? 这是 Roslyn blogs.msdn.com/b/csharpfaq/archive/2012/01/30/… 附带的一项功能 我总是为此使用标准的即时窗口 - 也适用于您自己的类型。 什么是“标准即时窗口”? @MattHickford 查看我的更新答案以获取更多信息 【参考方案1】:

值得注意的是,该功能在 .Net Core 项目的 VS 2019 中尚不支持。

您将找不到该选项,这是此答案中突出显示的已知问题 "Initialize interactive with Project" is missing for .Net Core Projects in Visual Studio 2019

解决方法是使用 #r 命令 (#r "Path/MyDll.dll") 手动加载程序集,如上面的答案所示。

【讨论】:

在带有dotnet6的VS2022中仍然如此。我们将不得不耐心等待重新引入该功能。【参考方案2】:

您可以使用自己项目中的类。 只需右键单击您的解决方案并选择“Reset Interactive from Project”。

如果您需要更多信息,这里是来源:Using the C# Interactive Window that comes with Roslyn – Part 2

【讨论】:

谢谢,听起来不错。唉,它不像描述的那样工作——无论我在什么项目上尝试,它都会弹出一个错误警报,说“无效的程序集名称”。令人沮丧的是,它没有解释它在谈论什么程序集。我猜这个软件坏了。 @MattHickford:这个项目是什么类型的项目?除了简单的 ConsoleApplications 和 ClassLibraries,我们还没有做太多的测试。 感谢凯文的提问。我刚刚在一些较小的项目上尝试了“从项目中重置交互”,它工作正常。它不能可靠地工作的项目是具有许多引用的更复杂的库和应用程序。 这些都不再适用于 VS 2015。上下文菜单命令消失了,#r 找不到我的项目程序集。有什么想法吗? 在 VS 2015 Update 3 中,右键单击解决方案中的项目(在解决方案资源管理器中)时,会出现“初始化与项目交互”。【参考方案3】:

完全同意“Initialize Interactive with Project”很酷。

我的方法是将类推送到库中并使用 //css_reference 在 C# 脚本中或 #r 在 C# 交互窗口中

例如:

#r "D:\\dev\\DbHMonData\\LoadH2Stats\\bin\\Debug\\DbHMonStats.dll"
using DbHMonStats;

【讨论】:

【参考方案4】:

只是来自@Botz3000 答案的更新。

您要查找的命令现在称为“Initialize Interactive with Project”

另外值得注意的是,如果我的 C# 交互式窗口不可见,我将找不到此命令。

【讨论】:

不,不是。我把它放在与屏幕截图所指出的完全相同的位置。 @Tom 根据您正在处理的项目类型,它似乎起作用或不起作用。当您找到它时,您正在使用的项目类型是什么? @WizardHammer 我相信类库 我正在尝试让它与 NetStandard 库一起使用,但上下文菜单中没有该选项【参考方案5】:

使用 Visual Studio 2015 时:

您可以通过导航到 视图 > 其他窗口 > C# 交互来打开交互窗口,

然后只需右键单击您的项目并从上下文菜单中运行Initialize Interactive with Project


对于旧版本:

要在代码中使用 C# 交互窗口,请确保首先编译代码,然后使用 #r 命令添加对生成的程序集的引用,如下所示:


您也可以使用Immediate Window 与您的代码进行交互,如下所示:

【讨论】:

谢谢。我更喜欢 C# 交互式窗口。即时窗口不友好,没有自动完成功能。 Console.WriteLine("hey") The name 'Console' does not exist in the current context System.Console.WriteLine("hey") Expression has been evaluated and has no value -1 问题是关于使用作为 roslyn 一部分的新 C# REPL(交互式窗口)。看看 Don Syme 的 c9 视频,他在开发过程中使用 F# Interactive Window。好东西。 channel9.msdn.com/Series/… @JohnDhom 为什么投反对票?我的答案完全展示了如何通过 C# 交互式窗口与您自己的代码进行交互(甚至还有一个屏幕截图显示)。 在.Net Core项目中,没有出现上下文菜单项,所以需要#r方法。这个答案非常适合。 我想添加一个更有用的提示:如果你想使用一些运行时的东西,你可以很容易地添加这个指令:#r "System.Runtime"

以上是关于C# 交互式窗口可以与我的代码交互吗?的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI Button 与 Map 交互

Django:如何使用我的模型类从 Django 外部与我的数据库进行交互?

13-8旅拍页面交互与我的页面实现

如何在 Visual C++ 中制作 dll,我想用 C# 进行交互

C# 从其他应用程序中获取鼠标按钮交互

多个进程之间的单元测试交互