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 é.

  1. Posso fazê-lo funcionar com o Office 2013 e ser compatível com versões anteriores?
  2. 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.
Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top