Build script

Jan 19, 2011 at 1:18 AM
Edited Jan 20, 2011 at 5:28 AM

Hi All,

As part of building installers for the AgUnit project, I'd like to add a build script. My goals are to have a single script that:

  1. compiles all the .NET & SL code
  2. runs all the automated tests
  3. builds the installers

Assuming the compilation & tests succeed, the output should be two installers; one for R# build 5.1.1753 and the other for R# build 5.1.1766. The installers will do a version check prior to installing, to make sure that they're being used against the correct R# version.

So naturally I have a couple of questions :-)

  1. Do other maintainers have a preferred build system? I'd like to use NAnt but I'm open to alternatives.
  2. What's the difference between the builds for .1753 & .1766? I had a cursory look at the code but nothing stood out.
  3. Is the .1766 build specific to .1766, or is it intended to work for future versions as well?
  4. Does anyone object to the R# libraries being put into our source control (or at worst externed)? We shouldn't have to install any external dependencies beyond Visual Studio to get a build done.

Thanks in advance for any suggestions & opinions ...

Yours,
Duncan Bayne 

Jan 19, 2011 at 8:22 AM

Hi Duncan,

For the build system, I usually use MSBuild as it's already available when you have visual studio. I've not worked with NAnt before, but if you want to use it, I don't object.

The difference between the builds is that they are compiled against the different versions of the assemblies. The API itself hasn't changed, and the latest code should compile with the older version of the references. I've not tested extensively that we actually need different versions for each build of Resharper, but we've had problems before with it ... maybe we can find a workaround.

I haven't placed the R# libraries in the repository yet, because I'm unsure if we can legally do that, redistribute them ...
There are also so many different versions of them. If we want to include different versions, the repository will grow quite large.
Technically it's handy to not have to set up anything for building, but in this case I'm not convinced that we should do it ... what is your opinion ?

Greetings,

Steven De Kock

Jan 20, 2011 at 5:09 AM

Steven,

Thanks for the details :-)  MSBuild is fine by me.  W.r.t. the R# dependencies, I've raised a support ticket to get their official blessing:

Hi,

My name is Duncan Bayne; I'm one of the contributors to the AgUnit project (http://agunit.codeplex.com/), which is a Silverlight test runner plugin for R#.

We are in the process of developing a self-contained build system for AgUnit.  

Because the behaviour of the R# assemblies varies over time, we would like to include supported versions of the R# assemblies in our Mercurial repository, so that we can version the code alongside the dependencies.

You can see the thread discussing this issue here: http://agunit.codeplex.com/Thread/View.aspx?ThreadId=242333

I've reviewed the R# licence and can't find any reason why we can't put those assemblies in our Mercurial repository, but thought I'd run it by you first.

Thanks for your time.

Yours,
Duncan Bayne

Personally I think we'd be fine, but I'd rather be squeaky clean on any issue to do with licensing.

Yours,
Duncan Bayne 

Jan 20, 2011 at 6:30 AM

Steven,

W.r.t. whether we should do it (which is moot until / if JetBrains get back to us) I think we should.  It gives us the ability to rebuild any arbitrary version (e.g. for testing or to support older versions of R#), and it dramatically reduces the work required to set up a new build or development environment.  Also it reduces the scope for human error; in my own (painful, embarrassing) experience it's very easy to try to build against the wrong version of libraries :-)

I'll admit it does make the repo a bit larger, but you'll have to download the libraries from somewhere ... either from the JetBrains site or from our repo.

Yours,
Duncan Bayne 

Jan 20, 2011 at 9:20 AM

Hi Duncan,

This is OK for me, go ahead if you receive the blessing of Jetbrains :)

Greetings,

Steven De Kock

Jan 20, 2011 at 9:16 PM

Alex from JetBrains support got back to me (very impressed with how prompt he was).  Apparently they are not okay with us putting the assemblies in the repo, but:

  • they have offered us a tool that will fix up the project references to point to wherever R# is installed (nice)
  • they are considering the release of a public R# SDK, which would contain assemblies we could store in our repo

So I reckon we should use the tool in the meantime, and await the public SDK with baited breath :-) 

Jan 21, 2011 at 9:45 AM

That was kind of the reply I was expecting.

Go ahead :)

Feb 23, 2011 at 1:51 PM
Edited Feb 23, 2011 at 1:51 PM

Hi Duncan,

How is the installer coming along ? Did you receive the tool from Jetbrains ?

Greetings,

Steven De Kock

Feb 24, 2011 at 6:02 AM

Hi Steven,

Jetbrains has sent me a copy of the tool but I've been flat out lately, & haven't had a chance to try it out.  It's still on my radar though ... hopefully I'll get an opportunity to do some work on it over the next week or so.

Yours,
Duncan Bayne