Intellisense in Visual Studio Code

Published
Wednesday, 8 November 2017
Category
Announcement
Author
mholo65

Intellisense

As some of you might have noticed, we have been working on getting intellisense working for Cake files in Visual Studio Code. Today we are happy to announce that the OmniSharp project have merged our pull requests (#932 and #1681) and released v1.13.0 of the C# extension for Visual Studio Code, which includes support for Cake. In addition to this, we have released a new tool, called bakery, which is the script analysis and code generation engine making this possible. More information about bakery and how everything works behind the scenes are coming in an upcoming blog.

How

How do you get this working then? Well, just follow the following steps (we assume that you already have Visual Studio Code installed):

  1. Open Visual Studio Code to the folder that you have a Cake file in.
  2. Make sure v1.13.0 of the C# for Visual Studio Code extension is installed in Visual Studio Code.
  3. Make sure v0.10.1 of the Visual Studio Code Extension for Cake is installed in Visual Studio Code.
  4. Make sure that Cake is installed in your tools folder. We recommend v0.22.0 or later, otherwise your addins will be installed twice. The easiest way to do this would be to run your .\build.ps1 file.
  5. Make sure that Bakery is installed in your tools folder. The easiest way to do this would be using the Install intellisense support command which ships with the Visual Studio Code Extension for Cake. Simply open the command palette, type cake and then select the option.
  6. At this point, you will need to close and re-open the folder within Visual Studio Code.
  7. Success!
    Intellisense

Troubleshooting

Q: I've followed the steps, but I don't get any intellisense.

The C# Extension for Visual Studio Code will automatically locate any *.sln file and use that as the target directory when starting omnisharp. If your *.cake files are located in a different location, you might need to select Cake project in the project selector.

Q: I've selected the Cake project, but still don't get intellisense.

Look in the OmniSharp Log for errors or warnings.

[warn]: OmniSharp.Cake.CakeProjectSystem
    Cake script service not connected. Aborting.

The above is an indication that Cake.Bakery isn't installed in your tools folder, while the below usually means that Cake isn't installed in your tools folder. (Yes, we are working on better error messages :))

[fail]: OmniSharp.Cake.CakeProjectSystem
    c:\Users\mb\src\gh\bakery\setup.cake will be ignored due to an following error
    System.TypeLoadException: A null or zero length string does not represent a valid Type.

Q: I don't see any error message and still don't get intellisense.

Look in the OmniSharp Log do you see anything even related to Cake if everything is setup correctly, you should at least see something similar to this:

[info]: OmniSharp.Cake.CakeProjectSystem
    Detecting Cake files in 'c:\Users\mb\src\gh\bakery'.
[info]: OmniSharp.Cake.CakeProjectSystem
    Found 29 Cake files.

If you don't. You probably have issues with getting v1.13.0 of the C# extension for Visual Studio Code installed. Please uninstall the extension and then try installing it again. Look for OmniSharp.Cake.dll in %userprofile%\.vscode\extensions\ms-vscode.csharp-1.13.0\.omnisharp\ if you're on Windows and ~/.vscode/extensions/ms-vscode.csharp-1.13.0/.omnisharp/ if you are running Linux or Mac OS.

Q: Ok, I get intellisense. But files I've added after opening Visual Studio Code won't light up.

This is a known issue in omnisharp also when it comes to *.csx files. We are working with the omnisharp team on getting this fixed in a later release.

Q: I have Cake.CoreCLR installed in my tools folder, isn't that enough?.

No, at the moment Cake.CoreCLR wont work.

Q: I tried everything above, I still don't get intellisense.

Submit an issue in the bakery repository on GitHub or reach out to us on Gitter.