Can the C# interactive window interact with my code?

C#.NetVisual StudioRoslyn

C# Problem Overview


In Visual Studio 2015 or later, I can open the 'C# interactive window', and run code:

> 5 + 3
8

That's cute. Now how can I interact my code—my classes? Assume I have a project open.

> 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?)

C# Solutions


Solution 1 - C#

When using Visual Studio between 2015 and 2022:

You can open the Interactive window by navigating to Views > Other Windows > C# Interactive,

Then just right click your project and run Initialize Interactive with Project from the context menu.


For older versions:

To use the C# Interactive Window with your code, ensure you first compile your code, then add a reference to the resulting assembly with the #r command like so:

C# command prompt


You can also use the Immediate Window to interact with your code as well, like so:

Immediate Window

Solution 2 - C#

You can use classes from your own project.
Just right click on your solution and select "Reset Interactive from Project".

If you need more information, here is the source:
Using the C# Interactive Window that comes with Roslyn – Part 2

Solution 3 - C#

Just an update from the @Botz3000 answer.

The command you want to find is now called "Initialize Interactive with Project"

enter image description here

Also it is worth noting i could not find this command if my C# interactive window was not viewable.

Solution 4 - C#

It's worth noting that the feature isn't yet supported in VS 2019 for .Net Core project.

You won't find the option, and it's a known issue as highlighted in this answer https://stackoverflow.com/questions/56042332/initialize-interactive-with-project-is-missing-for-net-core-projects-in-visua

The workaround is to use #r command (#r "Path/MyDll.dll") to load the assembly manually as seen in the answer above.

Solution 5 - C#

Totally agree "Initialize Interactive with Project" is cool.

My approach is to push classes into a library and use //css_reference in C# script or #r in C# Interactive window

For example:

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionColonel PanicView Question on Stackoverflow
Solution 1 - C#slothView Answer on Stackoverflow
Solution 2 - C#Botz3000View Answer on Stackoverflow
Solution 3 - C#Luke HammerView Answer on Stackoverflow
Solution 4 - C#Mahmoud HanafyView Answer on Stackoverflow
Solution 5 - C#beloblotskiyView Answer on Stackoverflow