Posso ancora utilizzare gli assembly Microsoft.Office.Interop con Office 2013?

Ho dovuto importare un progetto precedente (in .Net 2) in Visual Studio 2013, fa uso di Microsoft Primary Interop Assembly.

Visual Studio ha affermato che ho bisogno di aggiungere riferimenti al progetto. Ora sono andato a leggere e apparentemente Microsoft ha rilasciato solo il PIA per l’ufficio 2010? (Ho Office 2013)

Ora quello che vorrei sapere è.

  1. Posso farlo funzionare con Office 2013 ed essere retrocompatibile?
  2. E se è così una buona strada da percorrere per il futuro? Sarà compatibile? Perché vedo che hai bisogno di .Net 2 (al più tardi) e Windows 8 viene fornito con 4.5 e non 3 (per impostazione predefinita) e la maggior parte dei nuovi computer avrà Office 2012 o 2013.

Le PIA sono un artefatto storico, richiesto solo dalle vecchie versioni .NET (precedenti alla v4). Sono stati sostituiti in modo completo ed elegante dalla funzione “Incorpora tipi di interoperabilità”, nota anche come “No PIA”. Supportato da Visual Studio 2010, lo troverai nella finestra Proprietà quando selezioni un assembly di riferimento. Il valore predefinito è True . Un buon video che copre la tecnologia sottostante è disponibile qui .

Quale è la ragione per cui Microsoft non pubblica i PIA per Office 2013, si aspetta che tu incorpori i tipi di interoperabilità.

La funzione è molto desiderabile, evita che il cliente debba installare i PIA sulla sua macchina e che tu li includa con il tuo programma di installazione. Risolvere il problema quando nessuno dei due si prende cura di lui, un contrattempo completamente troppo comune. Inoltre, le PIA per Office sono molto grandi, il grande vantaggio di incorporare i tipi di interoperabilità è che l’assembly contiene solo i tipi effettivamente utilizzati. Molti megabyte ridotti a pochi kilobyte.

Il stream di lavoro è leggermente diverso. Invece di aggiungere un riferimento agli assembly Microsoft.Office.Interop disponibili nella finestra di dialogo Aggiungi riferimento, nella scheda .NET Framework, ora si utilizza la scheda COM. Scegli, quindi, ” Microsoft Excel 15.0 Object Library ” per generare i tipi di interoperabilità per un programma che utilizza Excel. Se si carica un vecchio progetto che utilizzava in precedenza i PIA, è sufficiente rimuovere tali assembly di riferimento e aggiungerli dalla scheda COM.

Si noti che una funzionalità viene persa, il targeting intenzionale di una vecchia versione di Office che non è stata effettivamente installata sulla macchina di sviluppo è più difficile. Se questo è un requisito, allora hai ancora bisogno dei PIA per quella versione, forza il tipo Interop di incorporamento a True nella finestra Proprietà. Effettivamente questo è discutibile, Microsoft ha difficoltà a mantenere le nuove versioni di Office completamente compatibili con le vecchie versioni. L’hanno tenuto attivo per 15 anni ma sta andando a vuoto. Uno scenario peggiore si rivolge a una versione più recente di quella che hai installato sul tuo computer, il che potrebbe rendere il tuo programma in crash molto difficile da diagnosticare eccezioni come AccessViolationException .

Si noti che è necessario apportare piccole modifiche al codice per consentirne il funzionamento. Le classi sintetiche ” XxxxClass ” non sono incorporate, solo le interfacce ” Xxxx “. Basta rimuovere la parola ” Class ” dalla nuova istruzione.

VS 2015 Community con Office 365: per qualsiasi motivo, l’aggiunta dall’object COM non funziona. La soluzione è andare nel GAC e trovare gli assembly di interoperabilità, copiarli in una directory temporanea, quindi aggiungere al progetto come qualsiasi DLL.

Inoltre, se non lo sai ormai, Windows 8 ha versioni precedenti di .NET Framework ma non sono installate di default. Vai a Funzionalità del programma —> Aggiungi funzionalità a Windows —-> e la prima casella di controllo dovrebbe essere .NET 3.0 e forse 2.0. Nota, se sei su un server WSUS dovrai dire a Windows di prendere i file dai server Windows Update. Spero che sia d’aiuto!

Ufficialmente non esiste alcuna retrocompatibilità del PIA per Office. In effetti funziona.

Per motivi di compatibilità con le versioni precedenti sto utilizzando PIA per Office XP da diversi anni e funziona perfettamente con Office XP, 2003, 2007 e 2010 (non ancora testato con il 2013) e su Windows XP, Vista, 7 e 8.

Per compatibilità con le diverse versioni di Windows sto usando .NET Framework 3.5.

Per il futuro … dipende da cosa stai facendo con il PIA. Se ansible, è molto meglio trattare direttamente con i file Open XML o creare un componente aggiuntivo per word / excel.

Ho appena scoperto che Visual Studio 2013 Express non ha più il supporto per l’ufficio. Quindi è necessario almeno la versione pro per farlo funzionare.