Я тоже не вижу проблем с вашим подходом.
Обычно VS автоматически создает сборку взаимодействия для компонентов COM, когда вы добавляете ссылку на компонент. Однако при добавлении ссылки на один из компонентов Office (XP или более поздней версии) ссылка на предварительно сгенерированную (и оптимизированную) первичную сборку взаимодействия от Microsoft добавляется, как в первом примере. Линия
<WrapperTool>primary</WrapperTool>
означает, что используется этот PIA.
Если вы правильно добавили ссылку PIA, для свойства CopyLocal этой ссылки должно быть установлено значение false, а для свойства Path должно быть что-то вроде
C:\WINDOWS\assembly\GAC\Microsoft.Office.Interop.Excel\12.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Excel.dll
Дополнительные сведения о сборках взаимодействия вы найдете в этой статье MSDN .
Чтобы первый метод заработал, необходимо, чтобы на компьютере были установлены основные сборки взаимодействия Office (PIA). Существует распространяемая версия от Microsoft:
AFAIK, эти PIA устанавливаются программой Office только после установки .NET Framework, поэтому для PIA существует отдельное распространение.
Примечание. Обязательно укажите версию Office, на которую вы нацелены. Однако при нацеливании на несколько версий Office могут возникнуть некоторые проблемы. Решением в этом случае может быть позднее связывание (если производительность не является проблемой).