A simple non-techincal explanation is
When AutoCAD is installed it installs acmgd.dll, acdgmgd.dll in the same location as the acad.exe
and when acad.exe starts up it demand loads acmgd.dll, acdgmgd.dll etc..
So you use the dll in the sdk which are stripped out version and provide the method names and return types etc... to be able to compile your code, that is why you set Copy local false if not then you have two copies of acmgd.dll loaded which will cause problems.
When a dll in loaded it will look in its output path for the referenced dll's and having copy local to true copies them in the same location.
So, if I understand correctly, the dlls in the SDK are more like a set of function prototypes, which do not contain the actual code, only the input/output specs., in order to validate the function references for compilation. Is that correct? I was confounded as to why they were so much smaller...
Makes sense not to have competing versions loaded.
But if I reference the actual assemblies in the ACAD install directory & set Copy Local to false, would that not accomplish the same thing? If that is the case, then the only advantage I can see to referencing the SDK versions would be a) slightly faster compilation and b) not having to repath references in the project in case you wish to modify existing code & have, for some reason, moved your AutoCAD installation. This seems like a very marginal advantage to me, but perhaps I am not grasping all implications.
@ kdub:
It will take me awhile to absorb this completely, but thanks very much for the references. I am sure others here will benefit as well. What I am getting right now is, the .NET runtime does most of this for you, but you can override its default protocol via your own configuration file.
Thanks, guys.