A partir de hoy, ¿cuál es la forma correcta de trabajar con objetos COM?

Esta es una pregunta muy común y decidí hacerla porque esta pregunta puede tener una respuesta diferente a partir de hoy. Con suerte, las respuestas ayudarán a comprender cuál es la forma correcta de trabajar con objetos COM. Personalmente, me siento muy confundido después de obtener diferentes opiniones sobre este tema.

Los últimos 5 años, solía trabajar con objetos COM y las reglas eran muy claras para mí:

Use un solo punto en líneas de código. Al usar más de un período, cree objetos temporales detrás de la escena que no se puedan liberar explícitamente.No use foreach, use un bucle for en su lugar y suelte cada elemento en cada iteraciónNo llame a FInalReleaseComObject, use ReleaseComObject en su lugar.No use GC para liberar objetos COM. La intención de GC es principalmente para el uso de depuración.Libere objetos en orden inverso a su creación.

Algunos de ustedes pueden sentirse frustrados después de leer esas últimas líneas, esto es lo que sabía sobre cómo crear / lanzar correctamente Com Object, espero obtener respuestas que lo aclaren y lo impugnen.

A continuación, hay algunos enlaces que encontré sobre este tema. Algunos de ellos dicen que es necesario llamar a ReleaseComObject y otros no.

Cómo liberar correctamente los objetos COM de Excel (Noviembre de 2013)Forma adecuada de liberar objetos COM en .NET (Agosto de 2011)Marshal.ReleaseComObject Considerado peligroso (Marzo de 2010)ReleaseCOMObject (Abril de 2004)

"... En los escenarios VSTO, normalmente no tiene que usar ReleaseCOMObject ..."

MSDN -Método Marshal.ReleaseComObject (versión actual de .NET Framework):

"... Debe usar este método para liberar el objeto COM subyacente que contiene referencias ..."

ACTUALIZAR:

Esta pregunta ha sido marcada como demasiado amplia. Según lo solicitado, intentaré simplificar y hacer preguntas más simples.

¿Se requiere ReleaseComObject cuando se trabaja con objetos COM o se llama a GC de la manera correcta?¿El enfoque VSTO cambia la forma en que solíamos trabajar con objetos COM?¿Cuáles de las reglas anteriores que escribí son obligatorias y cuáles son incorrectas? ¿Hay otros?

Respuestas a la pregunta(1)

Su respuesta a la pregunta