Got it!
application.Workbooks != application.Workbooks
This property doesn't expose a variable, it generates a value. So every time I access the Workbooks property I create a new COM object.
I fixed the code and all is well. Thanks, everybody.
var excelApplication = new Application();
var workbooks = excelApplication.Workbooks;
var workbook = workbooks.Open(pathToExcelWorkbook); // Fixed
workbook.Close();
workbooks.Close();
excelApplication.Quit();
Marshal.ReleaseComObject(workbook);
Marshal.ReleaseComObject(workbooks);
Marshal.ReleaseComObject(excelApplication);
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…