The move from 2010 to 2011 was a tougher round with many changes. This time around, from 2011 to 2012, it is quite easy and straightforward again.
For details on what needs modifying, as always, please refer to the Revit 2012 SDK documentation and especially the chapter 'What's New' in the Revit 2012 API help file RevitAPI.chm.
I spent a couple of hours migrating The Building Coder samples. The time is rather long because there are a large number of commands, over eighty. It was shortened somewhat because I had some experience from previously migrating lots of other ADN sample code for the Revit API trainings in Jeddah and Verona.
Without further ado, let me here present the new Revit 2012 version 2012.0.87.0 of The Building Coder sample code. For comparison purposes, here is an updated last Revit 2011 version 2011.0.87.2. In the latter, I already updated some administrative global stuff, so that it can be used to easily determine what the really relevant differences between the 2011 and 2012 versions are. Actually, I also removed the regeneration attribute, so this version will not run in Revit 2011 – it is really for comparison purposes only. I hope you are aware of the Unix diff, Visual Studio Windiff, and numerous other tools for comparing files and directory structures that can be used for this purpose.
One systematic difference that affects every single file in the same way is the removal of the regeneration attribute. It was obligatory in Revit 2011, and is voluntary but useless in Revit 2012 API, since the only supported regeneration mode is now manual.
Here is the list of different files produced by Windiff after updating the regeneration attribute in both versions:
properties\assemblyinfo.cs cmdcollectorperformance.cs cmdcolumnround.cs cmddimensionwallsfindrefs.cs cmdeditfloor.cs cmdgetsketchelements.cs cmdimportsinfamilies.cs cmdlibrarypaths.cs cmdmirror.cs cmdnewlightingfixture.cs cmdnewspotelevation.cs cmdnewwalllayer.cs cmdroomwalladjacency.cs cmdsettagtype.cs cmdspaceadjacency.cs cmdtransformedcoords.cs cmdwalllayers.cs cmdwalllayervolumes.cs util.cs
This is how the differences are displayed in Windiff, with deleted lines displayed in red and added ones in yellow:
In the 2012 version of the code, I commented out the 2011-specific lines of code and added a '// 2011' comment suffix to them. The 2012 version of the lines are also marked, with a '// 2012' comment suffix.
I suggest downloading and unpacking the two versions in two neighbouring directories and running Windiff on them yourself to examine the changes in detail.
Here is a full log of the migration steps.
I fixed all errors and most of the warnings, but 12 still remain. I consider these acceptable for the moment, and will leave things as they are for now. I have tested a very few of the migrated commands. Most are still untested in Revit 2012.
Good luck in your own porting efforts!
I am maintaining the version numbering system introduced for Revit 2011: major.minor.build.revision. I bumped the major revision to 2012 to make the link to Revit 2012 obvious. I may use the minor revision to indicate intermediate updates of the Revit API, if any appear. The build number is currently set to 87 and indicates the number of commands defined, more or less.
As before, I continue to use the RvtSamples SDK sample to load and launch all The Building Coder samples, as well as all the other ADN samples that I work with, just like I did for Revit 2010 and 2011. The BcSamples.txt include file read by RvtSamples is included in the zip file and provides all the details required. For more information, you can also refer to the RvtSamples documentation.