Moving development from Windows to Linux - c#

I'm a longtime Visual Studio(from versions 6 to 2008) user that really like the editor and especially the debugger. Now I'm thinking of giving Linux a go, is there a IDE with similar, or better, capabilities out there?
I'm also interested in recommendations for GUI libraries, c++ or c#.

http://monodevelop.com/ would be your closest bet for an editor similar to visual studio

I would recommend Eclipse, it's quite similar to Visual studio in capabilities and can be extended with much more plugins than VS has to offer.

I'd check out Mono. You shouldn't have to change too much from what you already do.

Dont, just dont! I'm doing this now # work since I have to and i tried, netbeans, kdevelop, eclipse. They're so basic compared to VS, especially if you're used to the more advanced features that you'll get crazy and desire visual studio back.

I moved from windows to linux 9 or so years ago after spending my initial career using Visual Studio.
The move was relatively easy as the build environment was first and foremost based on Makefiles. Up to this point I used scripts to create a visual studio project for the project each time there were changes.
At that time, the others in my team were using emacs. The learning curve is pretty steep when you come from something like VS, but IMHO it has been well worth the time I invested in it.
What sold me on emacs was the integration with gdb. Emacs has a mode specifically for gdb. Once this mode is started you can enable 'gdb-many-windows'. This gives you a view very similar to that of any debuger environment. Also, one of the first things that I did after moving was to setup the VS key shortcuts. So even after all this time, I have the following in my .emacs file:
(global-set-key [f7] 'compile) ;; asks for a command to run eg: make
(global-set-key [f4] 'next-error) ;; show the next error
(global-set-key [S-f4] 'previous-error) ;; show the previous error
(global-set-key [f5] 'gdb) ;; start the debugger
(add-hook 'gud-mode-hook ;; allows changes to debugger mode
'(lambda ()
(define-key (current-local-map)
[f10]
'gud-next) ;; F10 does step over
(define-key (current-local-map)
[f11]
'gud-step) ;; F11 does step into
(define-key (current-local-map)
[\S-f11]
'gud-finish) ;; Shift+F11 finish function
(define-key (current-local-map)
[f5]
'gud-cont) ;; F5 does continue.
(gdb-many-windows t))) ;; Set's up a debugger type view
If you haven't used emacs before, then the first thing you need to know is that you type: Ctrl+X Ctrl+C to exit emacs.
If you do decide to give it a go, after loading it up use Ctrl-H then 't'. This starts the emacs tutorial which will give you the basics.
Of course, if you get stuck, then just review or ask a SO question tagged with emacs. This has become a really could source of information for emacs use. I only found out about gdb-many-windows this April from this question!

Eclipse is the only IDE out there supporting multiple languages which has a comparable power to Visual Studio.

If you are going to do c# development on linux I would recommend MonoDevelop. It is designed specifically for .net development (eclipse is not) and it is really quite full featured now, it includes a visual debuggers, code completion, graphical nunit integration and virtually everything else you would expect from a modern IDE. It includes some features missing from Visual Studio. I was excited just recently to discover I can right click on an interface and choose find all implementations, This is a feature not implemented in visual studio and which I find extremely helpful.
Regarding the GUI libaries, if you are using c# on linux then the best GUI framework is GTK#. MonoDevelop includes a built in graphical designer for it.
Several mature and widely used linux applications use this including:
Banshee - music player
FSpot - photo manager (default in Ubuntu)
Tomboy - Notes application (default in gnome)
MonoDevelop - IDE (similar to Visual Studio)
GTK# is also cross platform and so can run on mac and windows as well. This is proved by its usage in MonoDevelop where it is used to run on linux, mac and windows.

I'm a Linux developer and I would kill (or at least maim) for a development environment approaching the sophistication of Visual Studio. But then Visual Studio doesn't support Lua or Haskell or ML, which are the major languages I use these days.
Like many others I find Eclipse too slow and lacking in functionality for languages that are not Java.
I do have two positive recommendations: for debugging C and C++ programs, the combination of valgrind (a memory debugger) and the Data Display Debugger (an interactive GUI debugger) make me about 5 times more productive in C than I used to be with just dbx or gdb.

Now I'm thinking of giving Linux a go,
is there a IDE with similar, or
better, capabilities out there?
I'm also interested in recommendations for GUI libraries, c++ or c#.
I only speak for C++:
There are similar IDEs, but they are not as good as VS.
The Qt framework includes the best C++ GUI library.
Do not even bother with Eclipse or MonoDevelop for C++, try KDevelop or QtCreator. The C++ debugging will be especially painful compared to what you've been used to.

monodevelop. Also #Develop is pretty nice - fast, though missing some features, and only supports C# (Mono or .NET)

Related

Xamarin and Visual Studio: What are the Differences? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 6 years ago.
Improve this question
I'm about to start learning C# using the Head First C# book from O' Reilly. It seems to be a pretty amazing book, however there's a slight problem - I don't have Windows. I found this cool looking IDE Xamarin that I thought would make a good substitute for Visual Studio, however I just want to make sure it won't be a total waste of time to download and install it. Or would either running VS on a Virtual Machine be a better option or on Bootcamp. However with Bootcamp the problem would be my lack of hard disk storage - I own a Mac Air and there's barely 40GB left.
So what are the similarities and differences between the two IDEs. Would it make learning C# using Head First difficult?
Also the reason why I'm not just downloading Xamarin and trying stuff out for myself is because my Internet speed is currently terrible (barely 0.5 megabits per second D:) and I'm too impatient to wait so long :P Plus it would be better if I knew before hand how Xamarin will affect the development of any apps I make.
When it comes down to editors/IDE's, there are a number of cross-platform alternatives. Not all are equally well-equipped.
Visual Studio Code is the new and lightweight IDE from Microsoft. It runs on Electron Shell (basically Github Atom) but is not as powerful as full Visual Studio even though the naming may let it seem so. It is more a code editor with a little extra (like type checking and building).
Xamarin Studio is a quite capable IDE, but is less configurable than Visual Studio. Also, it is focused more on Xamarin development, and less on general C# development.
Jetbrains Rider (codename) is Jetbrains' proven ReSharper extension, wrapped in its proven IntelliJ IDE. It is still in development but will be probably quite similar to Visual Studio in terms of functionality. It won't be free though.
Also, bear in mind that there are multiple runtimes for the same language and that there are differences between the runtimes!
.NET (Full) Framework: this is the reference implementation from Microsoft but only runs on the Windows Platform
Core CLR: this is a Microsoft Supported Cross-platform runtime, but only contains core functionality. You cannot use all the libraries in the full framework on this CLR.
Mono: this is an open-source cross-platform implementation of the full-framework. Obviously, not everything can be ported to all platforms, so there are pieces missing. Also, not all libraries are available.
Also 2, Microsoft has signed an agreement to buy Xamarin. Not sure how the IDE will evolve after the deals goes through.
Xamarin is basically done to create mobile cross-platform apps using all the mono core code.
But as I know, this IDE permit you to do some of other type of codes (F#, C#, ASP…), so for a beginner this IDE is enough. When you will have more experience, using VS will be better (if Microsoft do not implement new things in Xamarin IDE in the future), because all the integration of the Microsoft environment is amazin in VS.
But for now, with you missing space in your MAC, the easiest solution is Xamarin ! (Care when you will install the Android Package in Xamarin installation)
About Visual Studio Code, I think this IDE is not mature enought to be used for learning...
I think the visual difference is Visual Studio uses .net framework and Xamarin uses Mono Touch. I prefer to use Xamarin for cross platform app development because of reusability of code and components. Xamarin developer need to know android/ios/windows UI designs and coding logic but coding language is c#.
Note that Xamarin has introduced Xamrin Forms,acts as single UI layer for all platforms but still on initial stage. Good luck!

Can Windows and Linux developers work together on the same project using C# and ASP.net?

If a group of developers are working on a project written using ASP.net and C# in a Windows environment with Visual Studio, is there any way a developer can join their team and work with them on the project in a Linux environment? I know about the open source, cross-platform development framework Mono, could this be an option or would the Windows developers have to use this as well for that to work? Is the best option for a Linux developer to just install a Windows partition or can he join them without doing so?
Is the best option for a Linux
developer to just install a Windows
partition
Yes, by far. Even better, just get a PC. I've run into so many headaches trying to develop in .NET on Linux. Mono isn't perfect, and never will be.
Yes! Use MonoDevelop and a source management solution like Mercurial.
Yes, MonoDevelop can even load the Visual Studio solutions.
It deppends on many factors, I'd say that if you plan to use third party controls, for example, then you probably better stick to windows and visual studio. If you are going to do P/Invokes (call Win32 api methods) then, again, better stick to windows.
The fact is that many functionality that .Net framework has is only available on the Microsoft redistributable installer/visual studio installer etc. If you are joining a team that already has a project going on and it is linked to any of this namespaces (Microsoft.* comes to mind) then definitely install windows and visual studio, on the other hand, if you are just starting a new project it could be easy to develop on linux with monodevelop as long as you stick to anything that is fully supported by the mono framework.
Another thing you should consider are licenses. If your team already has visual studio and windows licenses it does not make much sense to switch to linux, as much as I love linux and mono/monodevelop the best way to develop for .net is the microsoft stack without a doubt.
What makes sense is to try to comply with mono so that your software can run in unix/linux infrastructure if you already have it and if switching it to windows server, for example, raises the cost too much.
It's all about the cost, unfortunely, so see these tools just as that, tools, they are the means to an end and just that. If developing and deploying with windows and to windows is cheaper then go ahead, if you have a large unix/linux server set already working and want to deploy into that then use mono, just consider it has a slightly learning curve since it is NOT visual studio/.net per se.

selecting an appropriate IDE

Which one of the following IDEs/language will you recommend for developing a project under windows that involves recognizing hand gestures and interacting with the OS? I will be using OpenCV library for image processing tasks. After that I will be using win32 APIs or .NET framework to interact with the OS, depending on the tool you suggest. Performance is also a major issue.
Visual C++ 2008 (using C++/CLI)
Visual C++ 2008 (using native C++)
visual C# 2008 (using .NET framework)
Qt
Dev C++
Code::Blocks
It sounds like your targeting Windows and only Windows. As such I would stick with Visual Studio. It's a great IDE and is designed specifically for windows development.
Both QT and Code::Blocks are designed to be cross platform IDEs. I don't have a lot of recent experience with either of these IDEs. In the past I've found that they were great at providing tools for generating cross platform code but not nearly as good at helping you target the features specific to a particular operating system. If you are only intending to target one platform you will likely want to use some Windows specific features.
As for the language that depends a bit more on what you are actually doing and is overall a bit subjective. My personal advice though is to use C# unless there is a constraint preventing you from doing otherwise. For example if you had to write a driver which required C++ code.
If I understand you clearly, I think what you want to know is not the IDE to use, but the programming language/platform to use.
If you go for C++/C#, Visual Studio is a great IDE, but I hope you know that it is costly too.
If that's fine with you, anyone on SO would highly recommend going for Visual Studio.
Visual Studio Express (freely available) is good if it is just an academic project.
If you are targeting C++ then there's absolutely no reason to use C++/CLI versus the native version. The only time I've ever used C++/CLI was for integration of a native C++ library with a managed code layer, to obviate the need to use COM interop.
Agree with Jared's suggestion to use C# (for speed of development) unless you have native code dependencies that require C++. I don't see any managed implementation of OpenCV mentioned here.
If you are targeting Windows only, then there's no reason to use Eclipse versus any version of Visual Studio >= 2005, unless you are totally familiar with Eclipse and a newcomer to VS.

Anybody else using MonoDevelop?

I'm starting a new project in MonoDevelop, and I want to see how other projects are using it.
I tried searching through SourceForge, code.google.com, etc., but mostly I was just finding things like add ins or something related to MonoDevelop itself.
So is there anyone else using MonoDevelop, especially open source?
Basically, MonoDevelop is designed to function very similar to Visual Studio, including using all the same sln/proj file types. You can take a VS solution, open it in MD, and hit F5 to run it, and vice versa.
Because of this, I don't know that many people are going to write about "how they use MD as part of their project" any more than someone is going to write about how they use Notepad.
Any project that is using sln/proj files on Linux/Mac is likely using MD.
MonoDevelop is multiplatform IDE, especially for Linux. Works with Visual Studio solution and project files (100% both direction compatibility). So you can't find project using it. Any C#/VB.NET project can be developed in MD.
Three years ago me and a friend started work a new mono project and tried to use MonoDevelop for it. However - this was an impossible mission - we got ridden with all kinds of bugs and crashes and in the end I said - go to hell MonoDevelop - I'll use my tried and true Emacs.
To tell you the truth with no features other than formatting and font locking Emacs turned out to be 10 times more productive environment for me. My friend somehow endured using MonoDevelop for the whole run of the project, but afterwards he said he was done with Linux for good if it offered such low quality dev tools.
Times were different back then, I've been following mono's development and monodevelop's as well - they seem to be turning out quite well. I think that the actual cause of your problem - not finding anything - lies in the fact that most Linux devs openly shun Mono as a development platform because of it's Microsoft roots. This is sad - because it's a solid alternative of Java - especially at the desktop applications front(GTK# is seriously cool).
Banshee seems to be using MonoDevelop. Probably most of the prominent mono projects with a GUI use it as well to some extent.
I've found MonoDevelop to be excellent so far. I've only been using it for about a month, but once I got it set-up the way I want it, I wouldn't go back to any other editor or IDE on Linux. It took me a while to figure out how to set the debugger up and configure the editor to how I like it.
It's almost like having Visual C# Express on Linux.
Try searching for MonoTouch projects. Mac + MonoDevelop + .NET iPhone apps.
I just tried compiling my project, 2 problems:
couldn't load Setup projects
couldn't load SQL Server Library projects
There is a way around this of course, just have to consider that not all project types can be built in mono and must design solution the way it doesn't stop you from building what you want.

How to implement code folding in C#

I'm beginning to work on a COBOL/BASIC IDE at work (to replace the one that we have currently that's a slight step up from Notepad). It'll be made in C#. The management is really interested in implementing some Visual Studio type features, and a big one is code folding. I've looked on MSDN, but I didn't see any good way to collapse lines (or to add the expand/collapse buttons).
I'm assuming that the text area should be a RichTextBox. Am I off track here? I suppose it could be done with some sort of modified TreeView, but that seems a little wrong to me. Is there some way of doing this that I'm just missing?
Why not use an existing IDE and extend it? Writing one from scratch is a huge undertaking (you need a parser, lexer, syntax highlighter and more), and is even more complicated if you need to support multiple languages (you mention COBOL and Basic).
Notepad++ has syntax coloring and one can add languages to it - COBOL is one of the ones installed by default. It supports code folding and has many plugins (you can write your own, that will suit your needs).
Edit:
Eclipse is another excellent IDE that has similar support, and as mentioned in the comments has a COBOL plug-in.
I suggest you take a look at SharpDevelop. It's a pretty good IDE with a bunch of Visual Studio like features already built in. It's written in C# and fully supports code folding with syntax highlighting in several languages. Plus, it's Open Source under the LGPL license. So, if you don't want to base your app on SharpDevelop then you can still reuse some of their controls like the code editor or windowing toolkit.
You should consider adding the COBOL language to SharpDevelop instead of starting from scratch. If you can't do this, then you can still use the SharpDevelop code as a decent reference on how to make a good IDE work.
Sometimes embedding Eclipse or a full-fledged editor is not appropriate. It's overkill or overweight or wrong for some other reason. I appreciate the first inclination suggested in other posts to not re-invent here, but in some cases a small invention is what is necessary. For example, the textbox used to make Stack Overflow posts .... is neither Eclipse nor an embedded Visual Studio. I wonder why?
It's important to ask the question - build it or buy it? - but sometimes, the correct answer is BUILD IT.
XPathVisualizer provides a simple example of a code-folding text editor implemented in C#, and based on a RichTextBox. It's not VB, though - it's an XML editor. But the general principles apply.
Here's a look at it.
To implement XML syntax colorization dynamically, while the user types, it uses a separate background thread. The reasons why and some of the details are described in a separate answer on Stack Overflow.
You could do something similar for your COBOL/VB thing. XPathVisualizer is open source, licensed with MS-PL, so you can browse and borrow.
If your team is used to "Visual Studio features," then I'll assume you use Visual Studio there at the office. Here are my suggestions:
Base your IDE on Visual Studio, for the following reasons:
Use Visual Studio 2010 if possible. The SDK is greatly improved from 2008/earlier.
Use Visual Studio 2008/2005 otherwise. At the moment, all of my commercial IDE products only support 2005/2008.
If your team uses Visual Studio, they will hate Eclipse. Not even an option to consider in this case unless you choose to use an existing Eclipse plug-in, saving you the time of creating a new IDE.
If your team isn't using Visual Studio 2010, you can use the Visual Studio 2010 Shell in Integrated Mode for free (Isolated Mode is not what you want). This lets you use Visual Studio 2010 for your IDE for now, and should the team upgrade later to one of the full versions of Visual Studio 2010, the IDE for your language will cleanly integrate into the full version. Edit: Visual Studio Shell is basically the core of Visual Studio without any specific languages (C#, C++, VB, etc.) included. Microsoft provides this core for free, and it's a great option specifically for people interested in creating their own language support.
Read my answers in the following two questions:
Here's a longer post on my reasons for using 2010 over 2008: How do I implement intellisense support for a custom DLR language in VS2008?
Here's a very long answer on implementing various features (most of which are based on the 2005/2008 SDK): How do i implement intellisense for my language in visual studio?
Writing a complete IDE is a HUGE task. I would recommend trying to find an existing one that has what you want, or make adaptions to an existing open source IDE.
To answer your question: I guess that the Visual Studio IDE uses a custom control, written from scratch, rather than a RichText control.

Categories

Resources