Support .NET Builds without requiring Visual Studio on the server
To build certain PCL libraries and libraries for Windows 8 RT requires having Visual Studio on the server.
Nick Berardi writes about a workaround that allows running a build server without VS, but it's really just a workaround for functionality that should be easy.
Not to mention there's probably licensing considerations we're just ignoring by doing that.
Please make it easy (and legal) to build .NET projects on a server without requiring a Visual Studio installation (or license) on that server.
It's already supported, MSBuild is an externally installable component, isn't it?
I have spent countless hours trying to get builds working without Visual Studio. There are so many dlls and target files and other references that are included within the Visual Studio install that are not available elsewhere that I have now given up.
The final straw for me was SQL database projects. I just could not see a way of building them without Visual Studio installed. Any approach which I looked at was extremely brittle and would be hard to keep up-to-date.
I really do not understand why Microsoft do not create an install package for build servers that does not include the tens of GB of unnecessary files that come with Visual Studio. There are crazy things like the .target files shipping only with Visual Studio rather than MSBuild, why would you not include these in MSBuild or the build agents package?
Our build servers now use almost 60GB of disk space, the majority of which is not required simply to get builds to work. This is a fine example of bloat and one of the reasons people turn to open source alternatives.
A comment from Microsoft on this issue would be very much appreciated.
Nick Schonning commented
I'd say this issue is now "in progress" with https://github.com/microsoft/msbuild
Ke Zhan commented
Try to setup a simple dev environment on my windows 8 tablet, Visual studio is too big for a tablet. So used Visuao Studio Code and want to be able to build the project using MSBUILD, but it's so painful to make it work. It'd be super nice to have this happening!!! So we can code everywhere!!!
Francesco Pontillo commented
I'd just like to point out it's 2015, and developers still have to install 10 GBs of Visual Studio to simply compile one damned package.
Søren Nguyen Boisen commented
How is this even an issue in 2015? Who in their right mind would require a build server to have a full version of Visual Studio (with all its bloat and problems installing/upgrading) installed?
I truly regret choosing .NET as platform for our company, it simply isn't mature yet, even after all these years.
I mentioned this to MSFT 5 years ago, and their official response was "As Designed"...
Craig Deubler commented
VS community edition is a great help with this, but it's still a huge unnecessary install.
Graham Bunce commented
@martin. No, the build environment should be as stripped bare as possible to make sure there is nothing on it, in the gac, etc that mean it can build in one environment but not another. "works on my machine" pseudo-certification should be avoided, and can be with a clean room build server, so +1 from me...
Can't believe this is still a thing in this day and age.
Søren Nielsen commented
And when you allow this, also allow for a way for Clickonce applications to change assembly name and productname, to allow for side by side installation of Test, CI and Production versions.
Sten Frostholm commented
I would very much like to see a special build server MSI installer - which shoud install only the necessary stuff required to build .NET Projects made from Visual Studio (without VS itself). Not only Windows 8 builds requires workarounds if VS is not installed
Here is a few examples we had to deal with at GN ReSound:
1) Put Microsoft unittesting dll's in NuGet packages - normally located in the GAC here:
2) Add another Visual Studio Web Publishing dll to source control (C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web\Microsoft.Web.Publishing.Tasks.dll).
Above is just examples, I'm sure many other task, build and test stuff is missing if VS is not installed on a build server.
3 votes from me
Camilo Martin commented
THIS! Here, see my frustration when trying to use Node.js on Windows: https://github.com/TooTallNate/node-gyp/issues/479
Jared Parsons commented
It would be great if the fix for this also fixed VSIX projects. So annoying for companies to have to go through problems like this
Martin Hinshelwood commented
Should I point out that there are no licencing considerations with this. You are free to install VS Ultimate on all of your build servers if your organisation owns even a single Ultimate licence. Your build server should reflect your development environment and not your production one... there is no compelling reason to invest in not requiring VS on the build server.
Kat Lim Ruiz commented
I agree, although the request should be stated differently.
The request should be: make Visual Studio, as an application, lighter, more portable and more self-contained (everything under one folder like Eclipse, or all the others).
And this would automatically drive the separation of interests between the tools, the IDE, and so on.
Additionally, when we install several VS versions it's ****!. All the DLLs, different folders, csproj associations, etc.
Stuart Williams commented
This would be extremely helpful.
Rudi Larno commented
Plus more in the comments.
Also doing file system web publishing would be a must for a build server.
I've gotten it working with the following steps:
- Installing BuildTools_Full.exe
- Copying C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web\ from a VS Machine
- Copying C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\WebApplications\ from a VS Machine
But this should be a simple installer to go from a clean OS install to working build server. For the sake of the children of planet earth don't make this part of TFS.