Microsoft seems to have recognized this perceived shortcoming with recent announcements for the next version of ASP.NET to be cross platform and for .NET to now be run as an open source project. While this will be great, there are options for building .NET code on non-Windows environments. Here's a look at using Atom on OS X to build .NET applications.
OmniSharp is a set of open source projects with the ultimate goal of enabling .NET development in your favorite text editor, whether it is Windows-based or not. It is not a Microsoft project, but there are a couple of Microsoft folks contributing to it. While Microsoft pushes for cross-platform support for .NET, OmniSharp is a great companion for building applications.
My current editor of choice for building code on my Mac is Atom (I still go with Visual Studio when using Windows), and the OmniSharp plugin is freely available to make Atom useful for .NET development. OmniSharp provides plug-ins for command-only development as well as Emacs, Vim, Adobe Brackets, and Sublime Text. Also, another interesting fact is OmniSharp takes advantage of NancyFX.
Installing and configuring OmniSharp is quick and painless. It requires three packages:
- language-csharp: adds C# language support to Atom.
- autocomplete-plus-async: provides the autocomplete feature (resembling the Visual Studio feature) for C# in Atom.
- omnisharp-atom: is the actual OmniSharp server, which is the backbone of working with C# in Atom.
These three packages can be installed via the Atom package interface (Atom | Preferences menu on OS X) as shown in Figure A. In addition, you can install the packages via the command line using the following three commands:
apm install language-csharp apm install autocomplete-plus-async apm install omnisharp-atom
Once the packages are installed, the OmniSharp menu will appear (Figure B), which provides three options:
- Toggle: This enables and disables the OmniSharp plug-in.
- Find Usages: This finds and displays all occurrences of selected code are used.
- Go To Definition: This locates and displays the definition for selected code.
The flame icon in the lower left corner of the Atom solution window shows whether OmniSharp is running. When running, the flame appears in green as shown in the bottom of Figure B. The flame appears gray when OmniSharp is not running.
Add or configure packages in Atom.
The OmniSharp package menu is visible once installed.
The reason to use OmniSharp is the assistance provided with developing code, which is accomplished mainly by way of the autocomplete feature. Figure C shows the feature when typing a class name, and Figure D demonstrates it displayed with method names. Completions appear as you type — you can point-and-click or press tab to select an item from the autocomplete list.
Clicking the OmniSharp flame icon (the green flame at the bottom of Figure B) opens information tabs, including Errors, Find (searching code), Build Output, and Output. Figure E shows the Errors tab, which provides information on the problems with your code — in the example, the ReadOne method is an obvious error (notice it appears with a red background on its line number). Figure F shows the OmniSharp output tab content, which lets you know details related to its running.
The autocomplete feature suggests object names as you type.
The autocomplete feature suggests method names as you type.
The OmniSharp Errors tab may be viewed by clicking the flame icon.
The OmniSharp Output tab provides information about the environment.
With OmniSharp installed and your C# code entered and validated, compiling the code can be accomplished with command-line tools. You can choose to use Mono (this uses the mcs command for compiling C# code) or work with vNext from Microsoft (remember, the company is promising cross-platform support in the new version), which is a work in progress. Also, you could copy to a Windows environment and compile using the standard C# compiler (csc command).
Create C# code on your Mac today
One item that will not be cross platform is the Visual Studio IDE, so you will need to use other tools when working with .NET code on non-Windows platforms. You can build .NET applications on non-Microsoft platforms like Linux and OS X now with OmniSharp. Take it for a test drive with your platform and favorite editor today.
Tony Patton has worn many hats over his 15+ years in the IT industry while witnessing many technologies come and go. He currently focuses on .NET and Web Development while trying to grasp the many facets of supporting such technologies in a production environment on a daily basis.