Mono is an awesome open source implementation for .net - You could try getting Mono for windows and keep writing in Visual Studio but running in Mono, then when you port to Linux it isn't so much of a surprise. I actually develop in VC# express for my linux box.
How do you do this?
Firstly, you can attempt to run a Visual Studio compile file in Mono. I've found this often works (except for where Windows Specific functions are called). So, I would compile my exe, then instead of running it directly, I would (in a command prompt) run:
mono myfile.exe
* There is a way to get visual studio to run that instead of you even inside its IDE but I can't remember the exact way.
e.g: In Express, New CS Project, Console App:
using System; class Program { static void Main(string[] args) { Console.WriteLine("Hello From " + System.Environment.CommandLine); Console.WriteLine("System Version: " + System.Environment.Version.ToString()); } }
Compiling in visual studio, then running both from mono and the normal exe (from a mono command prompt):
C:\Users\jt\Desktop\ConsoleApplication1\bin\Debug>ConsoleApplication1.exe Hello from ConsoleApplication1.exe System Version: 2.0.50727.3074
C:\Users\jt\Desktop\ConsoleApplication1\bin\Debug>mono ConsoleApplication1.exe Hello from C:\Users\jt\Desktop\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe System Version: 2.0.50727.1433
And of course, running in Linux (uploading same Visual Studio compiled application:
jt@cornflakes:~$ mono ConsoleApplication1.exe Hello from /home/jt/ConsoleApplication1.exe System Version: 2.0.50727.42
You can begin to see the subtle differences that Mono and standard .net virtual machines give. Something to be wary of is that Mono in Windows may have access to windows dll's, so some WPF and windows forms will still work.
I have to develop some windows apps which I use VC# express for, because it's not a bad development environment for all I normally think of MS products. However it would be very nice to test under Mono.
Oh, VS is awesome for developing - the apple xcode ide would be second on my list, followed by eclipse at quite a distance. (However Eclipse caters for languages that VS and the apple ide's do not, and :. it is awesome.). The downfall comes when you wan't to do something silly like talk to a mysql database rather then an mssql one.
Best Regards, JT