Componentes COM implantação com ClickOnce

Implantação de componentes COM herdado tradicionalmente tem sido uma tarefa difícil.Componentes precisam ser registrados globalmente e, portanto, podem causar efeitos colaterais indesejáveis entre aplicativos sobrepostos.Essa situação geralmente não é um problema em aplicativos .NET estrutura porque componentes são completamente isolados em um aplicativo ou são compatível com o lado a lado.O Visual Studio permite implantar componentes COM isolado no Windows XP ou sistema operacional superior.

ClickOnce Fornece um mecanismo fácil e seguro para implantar seus aplicativos. NET. No entanto, se os aplicativos usam componentes herdado COM, você precisará executar etapas adicionais para a implantação-los.Este tópico descreve como implantar componentes COM isolado e referenciar componentes nativo (por exemplo, do Visual Basic 6.0 ou Visual C++).

Para obter mais informações sobre como implantar componentes isolados do COM, consulte "Simplifique App implantação comClickOncee inscrição-disponível COM"em https://msdn.Microsoft.com/msdnmag/issues/05/04/RegdisponívelCOM/padrão.aspx.

inscrição-disponível com.

COM e sem inscrição é uma nova tecnologia para implantar e ativar componentes COM isolado.Ele funciona, colocando a biblioteca de tipos de todas sistema autônomo do componente e informações de inscrição que é normalmente instaladas no inscrição do sistema em um arquivo XML chamado manifesto, armazenados na pasta mesma que o aplicativo.

Um componente COM o isolamento requer que ele ser registrado na máquina do desenvolvedor, mas não precisa ser registrado no computador do usuário participante.Para isolar um componente COM, tudo o que você precisa fazer é conjunto Isolado propriedade True.Por padrão, essa propriedade é definida sistema autônomo False, indicando que deve ser tratada sistema autônomo uma referência COM registrados.Se essa propriedade for True, ela faz com que um manifesto a ser gerado para este componente em time de compilação.Ele também faz com que o correspondentes arquivos a serem copiados para a pasta do aplicativo durante a instalação.

Quando o gerador de manifesto encontra uma referência COM isolado, ele enumera todos o CoClass entradas na biblioteca de tipos do componente, correspondência de cada entrada com seus dados de inscrição correspondentes e geração de manifestam de definições para todas as classes COM o tipo de arquivo da biblioteca.

Implantando inscrição-disponível COM componentes usando o ClickOnce

ClickOnce tecnologia de implantação é adequada para a implantação de componentes COM isolado, pois ambos ClickOnce e disponível de inscrição COM exigem que um componente de ter um manifesto para ser implantado.

Normalmente, o autor do componente deve fornecer um manifesto.Caso contrário, no entanto, é capaz de gerar um manifesto automaticamente para um componente COM Visual Studio.A geração de manifesto é realizada durante o ClickOnce Processo de publicar; para obter mais informações, consulte Publicando aplicativos ClickOnce. Esse recurso também permite utilizar componentes legados criados em ambientes de desenvolvimento anteriores, sistema autônomo Visual Basic 6.0.

Há duas maneiras que ClickOnce Implanta componentes COM:

  • Usar o bootstrapper para implantar os componentes COM; isso funciona em todas as plataformas para as quais há suporte.

  • Use o componente nativo implantação de isolamento (também conhecido sistema autônomo inscrição-disponível COM).No entanto, isso funcionará somente no Windows XP ou no sistema operacional superior.

Exemplo de isolamento e implantando um componente COM simples

Para demonstrar a implementação de componente disponível COM inscrição em, este exemplo irá criar um aplicativo baseado no Windows no Visual Basic que referencia um componente COM nativo isolado criado usando Visual Basic 6.0 e implantá-lo usando ClickOnce.

Primeiro, você precisará criar o componente nativo COM:

Criar um componente COM nativo

  1. Usando o Visual Basic 6.0, da Arquivo menu, clicar Novo, then Projeto.

  2. No Novo projeto caixa de diálogo, selecionar o Visual Basic nó e selecionar um DLL do ActiveXprojeto .No Nome box, type VB6Hello.

    Observação:

    Somente tipos de projeto DLL de ActiveX e o controle ActiveX são suportados com o inscrição-disponível COM; não há suporte para tipos de projeto ActiveX EXE e documento ActiveX.

  3. In O gerenciador de soluções, clicar duas vezes em Class1.vb para em em aberto o editor de texto.

  4. Em Class1.vb, adicione o seguinte código após o código gerado para o New método:

    Public Sub SayHello()
       MsgBox "Message from the VB6Hello COM component"
    End Sub
    
  5. Crie o componente.From a Compilação menu, clicar Criar solução.

Observação:

inscrição-disponível COM suporta apenas DLLs e controles de COM tipos de projeto.Não é possível usar Executáveis com e sem inscrição COM.

Agora você pode criar um aplicativo baseado no Windows e adicione uma referência ao componente COM para ele.

Para criar um aplicativo baseado no Windows usando um componente com.

  1. Usando o Visual Basic, a Arquivo menu, clicar Novo, then Projeto.

  2. No Novo projeto caixa de diálogo, selecionar o Visual Basic nó e selecionar aplicativos do Windows.No Nome box, type RegFreeComDemo.

  3. In O gerenciador de soluções, clicar no Mostrar todos os arquivos botão para exibir as referências de projeto.

  4. clicar com o botão direito do mouse o Referências nó e selecionar Adicionar referência no menu de contexto.

  5. No Adicionar referência diálogo, clicar no Procurar guia, navegar para VB6Hello.dll e, em seguida, selecioná-lo.

    A VB6Hello referência será exibido na lista de referências.

  6. Aponte para o Caixa de ferramentas, selecionar a Botão controlar e arrastar-o para o Form1 formulário.

  7. No Propriedades janela, defina Textopropriedade para Hello.

  8. clicar duas vezes no botão para adicionar código de manipulador e no arquivo de código, adicione código para que o manipulador lê sistema autônomo segue:

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim VbObj As New VB6Hello.Class1
        VbObj.SayHello()
    End Sub
    
  9. Execute o aplicativo.From a Depurar menu, clicar Iniciar a depuração.

Em seguida, você precisa isolar o controle.Cada componente COM que o aplicativo usa é representado no seu projeto sistema autônomo uma referência COM.Essas referências estão visíveis sob o Referências nó o O gerenciador de soluções janela.(Observe que você pode adicionar referências diretamente usando o Adicionar referência comando a Projeto menu, ou indiretamente por arrastar um controle ActiveX para seu formulário.)

As etapas a seguir mostram como isolar o componente COM e publicar o aplicativo atualizado que contém o controle isolado:

Para isolar um componente COM

  1. In O gerenciador de soluções, in the Referências nó, selecionar o VB6Hello referência.

  2. No Propriedades janela, altere o valor do Isolado propriedade de False to True.

  3. From a Compilação menu, clicar Criar solução.

Agora, quando você pressionar F5, o aplicativo funciona conforme esperado, mas está em execução em disponível de inscrição COM.Para provar isso, tente cancelar o registro do componente VB6Hello.dll e executando RegFreeComDemo1.exe fora do IDE do Visual Studio.Desta vez quando o botão for clicado, ele ainda funciona.Se você renomear temporariamente o manifesto do aplicativo, ele novamente falhará.

Observação:

Você pode simular a ausência de um componente COM temporariamente cancelar registro.Abra um aviso de comando, vá para a pasta do sistema digitando CD /d %windir%\system32, em seguida, cancelar o registro do componente digitando regsvr32 /u VB6Hello.dll.Você pode registrá-lo novamente, digitando regsvr32 VB6Hello.dll.

A etapa final é publicar o aplicativo usando ClickOnce:

Para publicar uma atualização do aplicativo com um componente COM isolado

  1. From a Compilação menu, clicar Publicar RegFreeComDemo.

    O Assistente de publicar é exibido.

  2. No publicar assistente, especifique um local no disco do computador local onde você pode acessar e examinar os arquivos publicados.

  3. clicar Concluir para publicar o aplicativo.

Se você examinar os arquivos publicados, você notará que o arquivo sysmon.ocx está incluído.O controle está totalmente isolado este aplicativo, o que significa que, se a computador do usuário participante tiver outro aplicativo usando uma versão diferente do controle, não pode interferir com este aplicativo.

Referenciando Assemblies nativo

O Visual Studio oferece suporte a referências a assemblies de Visual Basic 6.0 ou C++ nativo; tais referências são chamadas de referências nativas.Você pode dizer se uma referência é nativa, confirmando que sua Tipo de arquivo propriedade é conjunto para Nativo or ActiveX.

Para adicionar um nativo referência, use o Adicionar referência comando e, em seguida, navegue até o manifesto.Alguns componentes de colocar o manifesto dentro da DLL.Nesse caso, você poderá simplesmente DLL propriamente dito e Visual Studio irá adicioná-lo sistema autônomo uma referência nativa se detectar que o componente contém um manifesto incorporado.O Visual Studio incluirá automaticamente sistema autônomo arquivos dependentes ou assemblies listados no manifesto se eles estiverem na mesma pasta que o componente referenciado.

Isolamento de controle COM torna fácil implantar componentes COM que ainda não tenham manifestos.No entanto, se um componente é fornecido com um manifesto, você pode referenciar diretamente o manifesto.Na verdade, você sempre deve usar o manifesto fornecido pelo autor do componente sempre que possível em vez de usar o Isoladopropriedade .

Limitações do inscrição-disponível implantação do componente COM

inscrição-disponível COM fornece vantagens evidentes em técnicas de implantação tradicionais.No entanto, existem algumas limitações e advertências também devem ser apontadas.A maior limitação é que ele só funciona no Windows XP ou superior.A implementação de COM e sem inscrição exigiu alterações à maneira na qual os componentes são carregados no sistema operacional principal.Infelizmente, não há nenhuma camada de suporte de nível inferior para disponível de inscrição COM.

Não, todos os componentes é adequado do disponível de inscrição COM.Um componente não é um adequado se qualquer uma das seguintes opções for verdadeira:

  • O componente é um servidor fora do processo.Não há suporte para servidores EXE; apenas DLLs são suportadas.

  • O componente é parte do sistema operacional ou é um componente do sistema, sistema autônomo XML, o Internet Explorer ou o Microsoft dados acesso Components (MDAC).Você deve seguir a diretiva de redistribuição de autor componente; Verifique com seu fornecedor.

  • O componente é parte de um aplicativo, sistema autônomo o Microsoft Office.Por exemplo, você não deve tentar isolar o modelo de objeto do Microsoft Excel.Isso faz parte do Office e só pode ser usado em um computador com o produto completo do Office instalado.

  • O componente é destinado ao uso sistema autônomo um suplemento ou um snap-in, por exemplo um suplemento do Office ou um controle em um navegador da Web.Tais componentes normalmente requerem algum tipo de inscrição esquema definido pelo ambiente de hospedagem está além do escopo de manifesto propriamente dito.

  • O componente gerencia um dispositivo físico ou virtual para o sistema, por exemplo, um driver de dispositivo para o spooler de impressão.

  • O componente é um dados acesso redistribuível.Aplicativos de dados geralmente exigem um separado Data acesso redistribuível ser instalado antes que eles possam ser executados.Você não deve tentar isolar sistema autônomo componentes, sistema autônomo o Microsoft ADO dados controle, Microsoft OLE DB ou Microsoft dados acesso Components (MDAC).Em vez disso, se seu aplicativo usa MDAC ou SQL servidor Express, você deve defini-las sistema autônomo pré-requisitos; consulte Como: Instalar os pré-requisitos com um aplicativo ClickOnce.

Em alguns casos, talvez seja possível para o desenvolvedor do componente de refazer o design para disponível de inscrição COM.Se não for possível, você pode ainda criar e publicar aplicativos que dependem delas com o esquema de inscrição padrão usando o bootstrapper.Para obter mais informações, consulte Adicionando pré-requisitos Personalizar.

Um componente COM só pode ser isolado uma vez por aplicativo.Por exemplo, não é possível isolar o mesmo componente COM de dois diferentes biblioteca de classes projetos que fazem parte do mesmo aplicativo.Isso resultará em um aviso de compilação e o aplicativo não será carregada em time de execução.Para evitar esse problema, a Microsoft recomenda que você encapsular componentes COM em uma biblioteca de classes único.

Existem vários cenários que COM inscrição é necessário no computador do desenvolvedor, mesmo que a implantação do aplicativo não requer inscrição.The Isolated propriedade requer que o componente COM ser registrado na computador do desenvolvedor para gerar automaticamente o manifesto durante a compilação. Há não há recursos de captura de inscrição que chamam o auto-inscrição durante a compilação.Além disso, quaisquer classes não explicitamente definidas na biblioteca de tipos não serão refletidas no manifesto.Ao usar um componente COM um manifesto de pré-existente, sistema autônomo uma referência nativa, o componente talvez não precise ser registrada no time de desenvolvimento.No entanto, o inscrição é necessário se o componente é um controle ActiveX e você desejar incluí-lo no Caixa de ferramentas e o Designer de Formulários do Windows.

Consulte também

Outros recursos

Implantação do ClickOnce