Hacker News new | ask | show | jobs
by Tobani 4500 days ago
I have done a lot of Java, Scala, etc. IntelliJ & Eclipse are both wonderful IDEs in their own right. A lot of things like ReSharper were in those IDEs before Jetbrains (maker of IntelliJ) made the plugin for VS.

After trying VS for a couple of projects I found it completely baffling and backwards.

And I don't think this is because VS is bad, but because the way I approach software is completely different. I want to be able to compile things from the command-line first and use the IDE to edit the code. The way this happens makes it much harder to use other tools I like such as Jenkins. I can't ssh to a windows server.

On the other hand I can see where somebody might be frustrated that they' can't remote desktop into a linux server or had to learn a new config language instead of having a GUI.

IIS is another beast altogether. I've had to help customers set up their servers and the instructions are a set of screenshots that are hard to follow and easy to skip. Most apache/nginx configs clients can copy/paste fragments into their configs to get things working.

I could have 1000's linux servers up by lunch, but it would probably take me all day to configure one windows server. You probably have a better solution for this, but I've not come across it.

For me VS C# probably wouldn't be too bad if it didn't require running windows.

4 comments

It sounds like you just don't know Windows/VS/IIS as well as you know the other stacks which is entirely understandable since I'm guessing you don't work with them very often.

For future reference you can compile VS projects from the command line if you want using MSBuild, that's all building in VS does. As far as IIS is concerned you can maintain all it's configuration via config files so an experienced Windows admin could have 1000's Windows servers up by lunch too. They'd probably take all day to get a Linux server up though.

> For future reference you can compile VS projects from the command line if you want using MSBuild, that's all building in VS does.

Err, no - MSBuild, is basically a clone of Ant, except that it is meant to be generated by Visual Studio. This is completely backwards from what happens in say Java/Scala with Maven, SBT or Gradle.

The advantage of having the build process external, as happens with Maven and Maven-like environments, is that you can easily automate things by writing plugins, plus you're not tied to the IDE at all. You need to push your artifacts into a repository? There's a plugin for that. You need to sign your artifacts with a PGP key? There's a plugin for that. You need to automatically increment the version number on releases? There's a plugin for that. Etc, etc... and all of these can be used in continuos integration processes.

Plus, MSBuild doesn't handle dependency management, which is completely retarded. You've got NuGet now, but again, Microsoft had to over-engineer it, to make it IDE friendly and thus the ease of setting up your own Maven repository is gone.

And have you tried building MSBuild projects on top of Mono? Try it. It's fun ;-)

Basically only a .NET developer that never experienced other environments could claim that MSBuild/VS.NET is satisfactory, but for the rest of us, it's like trying to do software development with early-2000 tools and IMHO, that's where the entire .NET ecosystem is.

> Err, no - MSBuild, is basically a clone of Ant, except that it is meant to be generated by Visual Studio. This is completely backwards from what happens in say Java/Scala with Maven, SBT or Gradle.

MSBuild does not require Visual Studio

> The advantage of having the build process external, as happens with Maven and Maven-like environments, is that you can easily automate things by writing plugins, plus you're not tied to the IDE at all. You need to push your artifacts into a repository? There's a plugin for that. You need to sign your artifacts with a PGP key? There's a plugin for that. You need to automatically increment the version number on releases? There's a plugin for that. Etc, etc... and all of these can be used in continuos integration processes.

The equivalent of plugins for MSBuild is Tasks

> Plus, MSBuild doesn't handle dependency management, which is completely retarded. You've got NuGet now, but again, Microsoft had to over-engineer it, to make it IDE friendly and thus the ease of setting up your own Maven repository is gone.

Yes it does via NuGet, and again NuGet has no dependency on the IDE

> And have you tried building MSBuild projects on top of Mono? Try it. It's fun ;-)

Yes I have, what's your point?

> Basically only a .NET developer that never experienced other environments could claim that MSBuild/VS.NET is satisfactory, but for the rest of us, it's like trying to do software development with early-2000 tools and IMHO, that's where the entire .NET ecosystem is.

Thanks for the personal and professional attack at the end there, nice touch

That is certainly the case. But I guess my point is both ecosystems are so completely divergent that it makes sense that .NET would be an uphill battle for shops not running it elsewhere.

I remember looking into MSBuild, but I couldn't get it to work. I must have had some path set wrong or something.

"For future reference you can compile VS projects from the command line if you want using MSBuild, that's all building in VS does."

Not necessarily true, I believe some versions of Visual Studio have their own compiler which is different to the one used by MSBuild:

http://blogs.msdn.com/b/ed_maurer/archive/2008/06/11/a-tale-...

You can also compile from the cmd prompt with devenv .
Is there a bulk license that Microsoft sells for a good price?
Most every command that can be done with a gui can be done via command line, mostly powershell; which you can use remotely. In fact I would be hard pressed to find any administration routine that cannot be done through command line and is not documented.
The thing that I could use most is a way to automate setting up a reverse-proxy on a given path. I've figured out the steps to make it happen in the GUI. But that is tedious and error prone.

Where would you suggest I go to find the best way to handle this?

"I want to be able to compile things from the command-line first and use the IDE to edit the code."

You want a text editor, not an IDE.

Not true. I want still want the IDE compile, type check, and add type-safe completions (When using statically typed languages). I want the IDE to assist me in writing the code. I want my IDE to launch/attach to processes for debugging. Generally, I want the IDE to produce binaries yes, but mostly for my own consumption.

I want to be able to access the compiler external from the IDE so I can automate builds/deployments easily.

Now I want both types of builds to happen in as close to the same manner as possible so they're consistent, but both are important.

I get compile, type check, and add type-safe completions with emacs writing Haskell through haskell-mode, auto-complete, and flycheck.
There is certainly a debate on where a text-editor ends and IDE begins. I think we can all agree we'd rather not use notepad or pico for most things.
msbuild <solution-path>
I always have the same problems when moving from linux over to a Microsoft shop. You really do have to approach VS differently than you would any other dev environment.