Skip to content

Why are there two solutions checked in?  #193

@jaredpar

Description

@jaredpar

Several customers have noticed there are two solutions checked into the repo and wonder which one they should be using: Roslyn.sln or Roslyn2013.sln?

Short answer

At the moment customers should be focusing on Roslyn2013.sln. This solution is guaranteed to build on a machine with only VS 2013 installed. Our Jenkins system is setup to ensure we don't silently break that guarantee.

Of course that solution won't be editable in VS 2013 due to our consumption of new language features. I would expect that it is editable in VS 2015 CTP5 but nothing is setup to verify this works at the moment.

Longer answer

The code available on GitHub now includes our Visual Studio components. These components necessarily depend on the VS SDK and building the code requires having a compatible version installed on the build machine.

The VS SDK though is tied to a particular version of VS and cannot be installed without it. The VS SDK and our dependency on it evolves at a fairly pace. Fast enough that it quickly includes components not available in even the latest CTP and instead requires a build which is only available internally.

In the past this hasn't been a problem because both the code and builds were internal. Now though our code is open to the world and we need a solution which doesn't depend on internal builds to succeed.

Once we complete the move to GitHub, I will quickly make getting Roslyn.sln into a externally consumable state a priority. That will include some manner of verification to ensure we don't break it as we evolve our code. At the moment though I'm still focussed on that critical first step: completing the move to GitHub. Hopefully that will be wrapping up in the next week or so.

How we keep it buildable is an item that is still being discussed. Our very rough thoughts are to:

  • Keep master buildable on a released version of Visual Studio. Preferably an RTM build but will likely start off with CTPs given our current state.
  • Create a branch where we can move forward with dependencies on internal build features.

This is a new world for us and we're still working to find the right processes. 😄

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions