Ainda posso usar assemblies Microsoft.Office.Interop com o Office 2013?
-
21-12-2019 - |
Pergunta
Tive que importar um projeto mais antigo (em .Net 2) para o Visual Studio 2013, ele faz uso dos Microsoft Primary Interop Assemblies.
O Visual Studio disse que preciso adicionar referências ao projeto.Agora fui ler e aparentemente a Microsoft só lançou o PIA para o office 2010?(Eu tenho o Office 2013)
Agora o que eu gostaria de saber é.
- Posso fazê-lo funcionar com o Office 2013 e ser compatível com versões anteriores?
- E se sim, este é um bom caminho a seguir para o futuro?Será compatível?Porque eu vejo que você precisa
.Net 2
(no máximo) e o Windows 8 vem com 4.5 e não 3 (por padrão) e a maioria dos novos computadores terá o Office 2012 ou 2013.
Solução
PIAs são um artefato histórico, exigido apenas por versões antigas do .NET (antes da v4).Eles foram substituídos completa e elegantemente pelo recurso "Embed Interop Types", também conhecido como recurso "No PIA".Com suporte desde o Visual Studio 2010, você o encontrará novamente na janela Propriedades ao selecionar um assembly de referência.O padrão é True
.Um bom vídeo que cobre a tecnologia subjacente é disponivel aqui.
Qual é a razão pela qual a Microsoft não publica os PIAs para o Office 2013; eles esperam que você incorpore os tipos de interoperabilidade.
O recurso é muito desejável, pois evita que seu cliente tenha que instalar os PIAs em sua máquina e que você os inclua em seu instalador.Resolver o problema quando nenhum dos dois cuida dele, um acidente muito comum.Além disso, os PIAs para Office são muito grandes, a grande vantagem de incorporar os tipos de interoperabilidade é que seu assembly contém apenas os tipos que você realmente utiliza.Muitos megabytes reduzidos a alguns kilobytes.
O fluxo de trabalho é um pouco diferente.Em vez de adicionar uma referência ao Microsoft.Office.Interop
assemblies conforme disponíveis na caixa de diálogo Adicionar referência, guia .NET Framework, agora você usa a guia COM.E escolha, diga: "Microsoft Excel 15.0 Object Library
" para gerar os tipos de interoperabilidade para um programa que usa o Excel.Se você carregar um projeto antigo que usava PIAs anteriormente, basta remover esses assemblies de referência e adicioná-los novamente na guia COM.
Observe que um recurso foi perdido; direcionar intencionalmente uma versão antiga do Office que você não instalou em sua máquina de desenvolvimento é mais difícil.Se isso for um requisito, então você ainda precisa dos PIAs para essa versão, force os tipos de interoperabilidade incorporados como True na janela Propriedades.Na verdade, fazer isso é questionável, a Microsoft tem dificuldade em manter as novas versões do Office totalmente compatíveis com as versões antigas.Eles mantêm isso há 15 anos, mas está perdendo força.O pior cenário é direcionar uma versão mais recente do que a que você instalou em sua máquina, o que pode fazer com que seu programa trave. muito difícil diagnosticar exceções como AccessViolationException
.
Observe que você precisa fazer pequenas modificações em seu código para permitir que ele funcione.O sintético "XxxxClass
"as classes não são incorporadas, apenas as"Xxxx
"interfaces.Simplesmente remova a palavra "Class
" de novo declaração.
Outras dicas
vs 2015 Comunidade com o Office 365 - Por qualquer motivo, o adição do objeto COM não funciona.A solução é entrar no GAC e encontrar os assemblies de interop, copiá-los para um diretório temporário e adicione ao seu projeto como qualquer DLL.
Além disso, se você não sabe agora, o Windows 8 tem versões mais antigas do .NET Framework, mas eles não são instalados por padrão.Vá para os recursos do programa ---> Adicionar recursos ao Windows ----> e a primeira caixa de seleção deve ser .NET 3.0 e talvez 2.0.Nota, se você estiver em um servidor WSUS, precisará informar o Windows para pegar os arquivos dos servidores Windows Update.Espero que ajude!
Oficialmente não há compatibilidade anterior da PIA para o cargo.Na verdade, funciona.
Por razões de compatibilidade com verso, estou usando a PIA para o Office XP desde vários anos e funciona bem com o Office XP, 2003, 2007 e 2010 (ainda não testado com 2013) e no Windows XP, Vista, 7 e 8.
Para compatibilidade com as diferentes versões do Windows estou usando o .NET Framework 3.5.
Para o futuro ... depende do que você está fazendo com a PIA.Se possível, é muito melhor lidar diretamente com os arquivos XML abertos ou para criar um suplemento para o Word / Excel.
Acabei de descobrir que o Visual Studio 2013 Express não possui mais suporte ao Office.Então você precisa pelo menos a versão pro para que funcione.