Por que usar o DllImport Attribute ao invés de adicionar uma referência?
Eu já vi alguns exemplos como este:
[DllImport("user32.dll")]
static extern bool TranslateMessage([In] ref Message lpMsg);
[DllImport("user32.dll")]
static extern IntPtr DispatchMessage([In] ref Message lpmsg);
Mas, o que eu não entendo é por que alguém faria isso ao invés de apenas referenciar a DLL como faz com outras bibliotecas? O MSDN declara: "O atributo DllImport é muito útil ao reutilizar o código não gerenciado existente em um aplicativo gerenciado. Por exemplo, seu aplicativo gerenciado pode precisar fazer chamadas para a API WIN32 não gerenciada". Mas, é dizer que não é útil fazer referência a uma dll não gerenciada ou impossível de outra maneira?