English 中文(简体)
Development Environment in Windows [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 7 years ago.

What are your recommendations for setting up a development environment in Windows, especially when not using an IDE. I am attempting to familiarize myself with Windows, and I feel a bit lost. What do developers commonly work on, especially when developing in multiple languages (e.g. Java, Python, C) in the same time.

So far, I have been a hardline using Mac+Linux environments where I love my command line a lot. I pretty much run all my compilations, testing, code repository commands in the terminal and have multiple terminals all the time. Terminal features (e.g. integrated bash completion, easy copy&paste, easy to setup environment variables) and package management tools (e.g. apt-get, port, fink) are quite handy. I dislike hunting down different websites to install their latest binary build.

Coming back to my question. My question is two fold:

  1. What s commonly used? Do developers on Windows commonly use command line, or just be satisfied with an IDE?

  2. For comers from Linux/Mac world: what do you recommend to get up to speed?

NOTE: I realize that a lot of Windows developers haven t used Linux, so they may not know what I m talking about when it comes to Linux environment.

最佳回答

It s almost unheard of to not use an IDE for Windows development.

I started programming in the early 80 s so grew up on the command line, but nothing beats a modern IDE for productivity.

By far the most common choice is Visual Studio, though I have also used #develop (open source) and find it a fine platform to get up to speed with.

I have used Eclipse extensively (on Linux and Windows) and find Visual Studio to be easier to use. I especially miss options for debugging under windows such as moving the instruction pointer around during debug and change-and-continue (change the code, within limits, while debugging, move the instruction pointer back if necessary, and keep debugging).

If you have used Eclipse, Visual Studio or #develop will not be that hard to get used to.

问题回答

I tend to install cygwin, which is a unix emulation layer and includes many of the standard unix utilities (grep, awk, sed, etc). You can use bash or any other unix shell with cygwin to basically give yourself a unix environment on windows.

There are some downsides, paths are a good example. Windows programs expect windows paths while the unix tools expect unix paths. You can convert between the two using the cygpath program, but sometimes its tricky to know when to use it.

Another thing I do fairly often is create a bunch of batch files that load different programs onto my path. This allows me to have different version of say java installed and I can pick the version I want to use for any given shell session. I link a bunch of these together so that I have a full environment for the program I m working on. For example, if I require java 1.5, maven, subversion then I would have a batch file to load each into the environment, then have a master file that loads all of them for a standard environment.

This approach gives a lot of flexibility and is really easy to maintain and work with different environment simultaneously.

Most windows developers that develop on the microsoft stack of products probably use Visual Studio. For windows development without Visual Studio, SharpDevelop is the current most popular alternative.

However if you are looking for a user experience more similar to linux you can always use windows command prompt and all of the command prompt compilers still exist. Just like with linux you ll have to modify your environmental variables to make everything work you you d like it to.

If that still isn t close enough to the feel on linux, you can try out Cygwin.

Many of your common utilities from linux like gdb do have windows builds as well.

And of course there is the Eclipse IDE that is used for many languages, by many people, on multiple platforms. It is very extendable.

Some other tools you may be missing:

Hopefully that covers most of your basic tasks.

Microsoft now has a real shell for Windows: Windows PowerShell.

In addition to Cygwin, there are ports for a lot of the GNU utilities and toolchain to Windows. GnuWin32 seems to be a more up-to-date version than UnixUtils. MSYS is essentially a port of BASH to Windows, but it s fairly useless without the MinGW userland.

C++ / .NET Development: Visual Studio 2008
Java / PHP Development: Eclipse IDE, which also supports C/C++.

For a non-IDE solution, Notepad++ is a very good code highlighter that supports many languages.

Simply install cygwin. The quality has improved dramatically in recent years. I m currently running cygwin x64 on Vista, and it s great.

One thing to especially take note of in cygwin is your path. Most troubleshooting with scripts and installed software should begin there.

The other tip I d give is to use the rxvt terminal over the standard issue cygwin terminal. It might be installed by default nowadays, but check to make sure.

  • Visual Studio for .net/C++ (even the express editions are useful)
  • The sysinternals tools rock, especially Procmon and process explorer.
  • If you do native/C++ work knowing windbg can be helpful
  • Notepad++ and gvim are my preferred editors
  • For doing command line/shell stuff I often use python to write short scripts (for anything but the simplest batch file)
  • If you are familiar with .net then learning powershell isn t much of a stretch and there is a ton of functionality available




相关问题
Why running a service as Local System is bad on windows?

I am trying to find out the difference between difference service account types. I tumbled upon this question. The answer was because it has powerful access to local resources, and Network Service ...

Programmatically detect Windows cluster configuration?

Does anyone know how to programatically detect that a Windows server is part of a cluster? Further, is it possible to detect that the server is the active or passive node? [Edit] And detect it from ...

get file icon for Outlook appointment (.msg)

I ve read Get File Icon used by Shell and the other similar posts - and already use SHFileInfo to get the associated icon for any given extension, and that works great. However, Outlook uses ".msg" ...

Identifying idle state on a windows machine

I know about the GetLastInputInfo method but that would only give me the duration since last user input - keyboard or mouse. If a user input was last received 10 minutes ago, that wouldn t mean the ...

Terminating a thread gracefully not using TerminateThread()

My application creates a thread and that runs in the background all the time. I can only terminate the thread manually, not from within the thread callback function. At the moment I am using ...

热门标签