After upgrading to 3.4 I sync Monodevlop and now I have 4 different projects in my solution


Before upgrading I had 1 Solution file with 1 Project in it. Now I have 1 Solution file with 4 projects in it. The projects are called:

  1. Assembly-CSharp
  2. Assembly-CSharp-Editor
  3. Assembly-CSharp-firstpass
  4. Assembly-UnityScript [not in mygame-csharp.sln - see edit]

I have tried deleting all project solution files and do a complete resync and I still end up with 4 projects. I can’t seem to find any information about these 4 projects? My assets are spread throughout all 4, some of them included in 1 project, others in several projects.

|EDIT + 1|
I currently run a virtual machine with Windows 7 + Visual Studio on it. I use this to get all the nice intellisense features.

The project Assembly-UnityScript will not open in Visual Studio. All three other projects depend on this project and thus nothing will compile.

BUT there are two project solutions. One called mygame and one called mygame-csharp. If you open the mygame-csharp solution it only contains the first 3 projects and will compile with visual studio - yay!

I still do not understand why there are extra projects and why they have not been mentioned in any documentation.


Actually Unity always had this seperation even before the update. Unity compiles 3 (or 6) different assemblies. But now they also seperated the projects accordingly:

  • Assembly-CSharp-firstpass
  • Assembly-CSharp
  • Assembly-CSharp-Editor

Same happens with UnityScript (JavaScript)

1. firstpass

  • folders: “Standard Assets”, “Pro Standard Assets”, “Plugins

All first pass assemblies is compiled first (C#, UnityScript, Boo). The reason is that you can’t use any classes from other languages unless they are already compiled and added to the project as assembly (thanks to .Net / Mono all are compatible).

So a first-pass-C#-script can’t use a first-pass-UnityScript-script. The first passes provide the base on which the other passes are build on top.

2. (normal pass)

  • folders: everything outside “Editor” and the above mentioned folders

The usual compiling group is the group where most of your scripts should be located. The big advantage is that all assemblies from the first pass (from all languages) can be used in those scripts because they are already compiled.

3. Editor

Well, all editor scripts also go into a seperate assembly since it isn’t even included into the build. The editor scripts are compiled last so they can use all of your runtime scripts.

Some Notes:
I can understand the relationship between the different assemblies but i have to agree that it’s very confusing to work with. However when you stick to one language (i would recommend that) you only have to deal with one project (the normal one). Beside the better management it will also compile faster if you don’t have a first-pass group.

It totally fine that the editor stuff still is seperated since it IS something different.

Unity creates multiple solution files for the different editors since Visual studio can’t work with UnityScript the UnityScript projects are not included in the VS version.