So my startup To-Do.Studio is advancing, and we started getting rolling on our informational website.
The first thing was to create a “web site” project with Visual Studio, and get it into GIT.
As you can see, it’s just a bunch of HTML, CSS and stuff, with a small web.config so that we can host on IIS (we are using Azure App Services for this). The first thing which is abnormal though and unlike a normal ASP.NET project, I do not have a CSPROJ that describes my project, instead, I have a PUBLISHPROJ, and it gets ignored by GIT. So how did we get here ?
Since Visual Studio relies on things like MSBUILD to “publish” projects, it needs some sort of project file and in this case, Visual Studio created the PUBLISHPROJ the first time I created the publish profile, this allows me to publish from the command line and more.
Although the file is GIT ignore, I had to add it to GIT in order for the VSTS build system to be able to publish this project.
The other modification we had to do was to add to GIT a special file, in the folder of the solution called “after.ToDoStudio.StaticWebFront.sln.targets”. Turns out MSBUILD looks for these files automatically to include them in your build process, without the need to modify the solution file. This is what we put in there:
<!--?xml version="1.0" encoding="utf-8"?--> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Target Name="Deploy Website" AfterTargets="Build"> <Message Text="Starting Website deployment" Importance="high"> </Message> <MSBuild Projects="$(MSBuildProjectDirectory)\ToDoStudio.StaticWebFront\website.publishproj" BuildInParallel="true" /> </Target> </Project>
What this does is ensure that after the Build action (which by default will build nothing cause this is a project with nothing to build), the system will automatically invoke the publish action using the PUBLISHPROJ.
Now we were ready to build this thing within VSTS.
As you can see here, our build is pretty standard with defaults used everywhere:
The release pipeline is also pretty standard, nothing fancy here: