Compartilhar via


Introdução a extensibilidade de projetos

O modelo de objeto está disponível, simplesmente adicionando referências aos assemblies VSLangProj ao seu projeto: Assemblies VSLangProj.dll, VSLangProj2.dll, VSLangProj80.dll e VSLangProj90.dll.Para obter mais informações, consulte Como: Adicionar ou remover referências no Visual Studio (Visual Basic).Isso significa que o modelo de objeto está disponível para qualquer tipo de projeto que deve estender ou automatizar o IDE, suplementos e macros.As macros são escritas em ambiente de desenvolvimento integrado macros usando Visual Basic. Os exemplos nos tópicos são gravados no Visual Basic e Visual C# idiomas. Para obter mais informações sobre como executar os exemplos, consulte Como: Compilar e executar os exemplos de códigos automação modelo de objeto. sistema autônomo suplementos podem ser gravados em qualquer Visual Studio hospedada, sistema autônomo linguagem, Visual Basic, Visual C#, Visual C++ e Visual J#. Os tópicos de referência para o VSLangProj, VSLangProj2VSLangProj80 e VslangProj90 os membros incluem a sintaxe para cada um desses idiomas. Para obter uma descrição dos tipos de projeto de automação e recursos de automação, consulte Criando Adicionar-ins e assistentes.

VSLangProj, VSLangProj2, VSLangProj80 e VSLangProj90 Namespaces

Esses espaços para nomes contêm todas as classes, interfaces e enumerações para Visual Basic, Visual C# e Visual J# projetos. Para obter uma lista completa dos objetos no espaço para nome, consulte Visual Basic e Visual modelo de objeto de extensibilidade translation from VPE for Csharp para projetos.

Possível erro usando VSLangProj assemblies com EnvDTE Assembly

Se você criar um projeto que referencia um ou mais dos assemblies VSLangProj e o EnvDTE assembly, você pode ocasionalmente obter o seguinte erro em tempo de execução:

"exceção sem tratamento: sistema.IO.FileNotFoundException: Erro ao carregar o arquivo ' EnvDTE, versão = 7.0.3300.0 "

Este erro é devido a um conflito de resolução de tipo de tempo de execução.Ou seja, a versão do EnvDTE incluída no Visual Studio 2005 é 8.0.xx, mas a referência de configuração do projeto está procurando por uma versão anterior deste assembly, versão 7.0.xx. Para corrigir esse problema, você deve adicionar um redirecionamento de ligação para a versão mais recente de EnvDTE arquivo de configuração (config) do seu projeto. Isso permitirá que Visual Studio para carregar a versão mais recente do EnvDTE e evitar que o erro ocorra novamente.

Para fazer isso, adicione um "arquivo de configuração de aplicativo" ao seu projeto e, em seguida, substitua seu Sumário com o seguinte:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-
        com:asm.v1" appliesTo="v2.0.50318">
            <dependentAssembly>
                <assemblyIdentity name="EnvDTE" publicKeyToken=
                "b03f5f7f11d50a3a"/>
                <bindingRedirect oldVersion="7.0.3300.0" 
                newVersion="8.0.0.0"/>
            </dependentAssembly>
        </assemblyBinding>
    </runtime>
</configuration>

Objeto VSProject2

Este objeto fornece acesso a outros objetos no modelo de extensibilidade.O objeto DTE é o objeto de nível superior no Visual Studio modelo de automação. No modelo de extensibilidade geral, um projeto é representado pelo genéricoProject objeto. The Project o objeto tem um Object propriedade. O tipo desta propriedade é determinado em time de execução pelo linguagem do projeto.In a Visual Basic, Visual C# ou Visual J# projeto, o Object propriedade retorna um objeto do tipo VSProject2. Desde o tipo do Object propriedade é o objeto, você deve converter a referência ao tipo VSProject2. Em uma macro, a projeção ficaria semelhante ao seguinte se o primeiro projeto foram um Visual Basic projeto:

Imports EnvDTE
Imports EnvDTE80
Imports VSLangProj
Imports VSLangProj2
Imports VSLangProj80
Imports VSLangProj90
Dim proj As EnvDTE.Project
Dim vsproject As VSLangProj80.VSProject2
proj = DTE.Solution.Projects.Item(1)
vsproject = CType(proj.Object, VSLangProj80.VSProject2)
using EnvDTE;
using EnvDTE80;
using EnvDTE90;
using VSLangProj;
using VSLangProj2;
using VSLangProj80;
EnvDTE.Project proj;
VSLangProj80.VSproject2 vsproject;
proj = DTE2.Solution.Projects.Item(1);
vsproject = (VSLangProj80.VSProject2)proj;

Depois de fazer referência a VSProject2 item, você pode manipular propriedades do projeto, configurações, arquivos, pastas, instruções imports e referências.

Para obter mais informações, consulte Introdução ao objeto VSProject2.

Referência de objetos e referências

The References propriedade, contida no VSProject2 objeto, armazena uma coleção de Reference3 objetos. The Reference3 objeto representa uma referência de projeto e é principalmente um objeto de somente leitura que oferece suporte a um Remove método. The References objeto tem suporte para adição de referências (COM, assemblies do .NET, ActiveX, outros projetos) e gerar eventos (adição, remoção e alteração de referências).

The References objeto não contém as referências da Web de um projeto. Referências do projeto a na podem ser recuperadas, acessando o ProjectItems propriedade das WebReferencesFolder propriedade.

Para obter mais informações e exemplos de código, consulte Reference e Reference3 objeto, References coleção, References propriedade, e WebReferencesFolder propriedade.

Objeto importações

The Imports propriedade contida pela VSProject2 objeto mantém uma coleção de Imports instruções que se aplicam a todo um Visual Basic projeto. Se uma demonstrativo de importação for adicionada a essa coleção, o correspondente Imports demonstrativo (por exemplo, Imports VSLangProj) não precisa ser adicionada ao arquivo de código. Este objeto oferece suporte a adição e remoção de instruções imports e gerar eventos em resposta a adição e remoção de instruções.Não há nenhum equivalente em um Visual C# projeto e o VSProject2.Imports propriedade para retornar Nothing ou null Quando aplicado a um Visual C# projeto. Para obter mais informações, consulte Imports.

Objetos BuildManager e VSProjectItem

The VSProjectItem o objeto é a contraparte do item de projeto da VSProject2 objeto. No modelo de extensibilidade Geral, a genéricoProjectItem objeto representa um item de projeto. The Object propriedade é do tipo objeto e, em um Visual Basic ou Visual C# projeto, o tipo dessa propriedade é VSProjectItem. Converter o objeto para digitar VSProjectItem teria esta aparência em uma macro:

Imports EnvDTE
Imports EnvDTE80
Imports VSLangProj
Imports VSLangProj2
Imports VSLangProj80
Imports VSLangProj90
Dim pi As VSProjectItem
pi = CType(DTE2.Solution.Projects.Item(1).ProjectItems.Item(1)._
    Object, VSProjectItem)
using EnvDTE;
using EnvDTE80;
using VSLangProj;
using VSLangProj2;
using VSLangProj80;
using VSLangProj90;
EnvDTE.Project proj;
VSLangProj.VSProjectItem pi;
Pi = (VSProject2)DTE2.Solution.Projects.Item(1).ProjectItems.Item(1).
Object;

The VSProjectItem objeto contém propriedades que se vinculam a item de projeto pai, projeto e um método que força a execução de uma ferramenta personalizada nesse item. The BuildManager objeto lida com a saída da ferramenta personalizada. Para obter mais informações, consulte RunCustomTool método, Introdução ao objeto BuildManager, VSProjectItem objeto, e BuildManager objeto.

Propriedade Properties

O modelo de extensibilidade geral possui um Properties propriedade em três objetos:

  • Project objeto As propriedades neste objeto são equivalentes às propriedades encontradas na Propriedades comuns o guia do caixa de diálogo propriedade Pages do projeto no IDE.

  • Configuration objeto As propriedades neste objeto são equivalentes às propriedades encontradas na Propriedades de configuração o guia do caixa de diálogo propriedade Pages do projeto no IDE.

  • ProjectItem objeto As propriedades neste objeto são equivalentes às propriedades encontradas na Propriedades janela quando um item de projeto é selecionado em O gerenciador de soluções.

  • Em cada caso, a Properties propriedade é uma coleção de objetos do tipo de propriedade. A Property é possível obter objeto da coleção, especificando seu nome ou índice baseado em 1 da propriedade. O Sumário da coleção depende do linguagem.No caso de itens de projeto, o Sumário também depende se o item é um arquivo ou uma pasta.

Consulte também

Conceitos

The Spectrum do Visual Studio Automation

Outros recursos

Criando Adicionar-ins e assistentes