From the MDSN documentation :
The DllImport attribute is very useful when reusing existing unmanaged code in a managed application. For example, your managed application might need to make unmanaged WIN32 API calls.
Basically, when you write a .NET application, and the library does not have a managed shell (it is written in unmanaged code), you need to use DllImport to interact with it. Otherwise, you can reference managed libraries using the using statement, as usual, in any library of the base class.
wsanville
source share