With every new release, we revision the object version of the COM API. This is done for side-by-side compatibility and requires small updates to client code. Hopefully, your code using the COM API is well centralized, so the changes are easily located and simple to do. The new version of the COM API is 10.0, which means you will see the following changes.
The TLB files are installed into their own directory inside of Autodesk Shared using the COM version to separate type libraries of different releases. In the case of Jay Peak, the location is "C:\Program File\Common Files\Autodesk Shared\Civil Engineering 100". When updating your references, you should be able to use Visual Studio's "Add Reference" dialog. The COM tab will show the references referring to "Autodesk Civil Engineering ..." libraries. The following screen-shot show the references for Jay Peak (Civil 3D 2013).
The COM interops are no longer installed to the Global Assembly Cache (GAC), which means you need to add references to the interops from the AutoCAD Civil 3D installation directory, typically “C:\Program Files\Autodesk\AutoCAD Civil 3D 2013”. You can still see the references in the COM tab, and they work on my development environment because we register things different than production, but in a release environment adding the references from the COM tab will not work, and you will not be able to build your application (thanks to Jeff Mishler for pointing this detail, which I completely forgot).
Once you have updated your referenced assemblies, you need to update any place in code where you are creating/accessing objects by version. Usually, you would do that when accessing an application instance. A very common example is when accessing the Civil 3D Land Application object, which in Civil 3D 2012 you used the string "AeccXUiLand.AeccApplication.9.0". This string should be updated to "AeccXUiLand.AeccApplication.10.0".
There is no new functionality in the COM API, and your code should work with 2013 as it did with 2012. If you find any issues after you port your application, you should report them through the usual channels provided by ADN. You can also drop me a comment in this blog, and I will make sure the engineering team takes a look at the problem.
Isaac, can you clarify something about the Interops? I was advised that 2013 required us to reference the Interop DLL's in the main 2013 install folder and set the references to be Embedded. This is what I have done and it's working fine (in fact, I had tried what you suggest and could never get the project to build). Kean's March 2 blog post was the first I saw of this, albeit for plain Autocad.
Thanks! And good to see you posting again.
Posted by: Jeff Mishler | 04/12/2012 at 07:02 AM
Jeff,
Thanks for pointing this out. I completely forgot about that fact. The way we register the development enviroment makes this possible, but it will not work in release/production. I updated the post to reflect this.
Thanks again,
Posted by: Isaac Rodriguez | 04/14/2012 at 05:53 AM