Partilhar via


Introduction to Project Extensibility

O modelo de objeto está disponível, simplesmente adicionando referências aos assemblies VSLangProj ao seu projeto: Conjuntos de VSLangProj.dll, VSLangProj2.dll, VSLangProj80.dll, VSLangProj90a.dll e VSLangProj100.dll. Para obter mais informações, consulte Como: Adicionar ou remover referências no Visual Studio. 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 gravadas no ambiente de desenvolvimento integrado Macros usando Visual Basic. Os exemplos de tópicos são escritos na Visual Basic e Visual C# idiomas. Para obter mais informações sobre como executar os exemplos, consulte Como: compilar e Executar a automação de exemplos de Código do modelo de objeto. Add-ins que podem ser escritos em qualquer Visual Studio hospedada, como o idioma, Visual Basic, Visual C#, e Visual C++. Os tópicos de referência para o VSLangProj, VSLangProj2, VSLangProj80, VslangProj90 e VslangProj100 os membros incluem a sintaxe para cada uma dessas linguagens. Para obter uma descrição dos tipos de projeto de automação e recursos de automação, consulte Criando Adicionar-.

Namespaces de VSLangProj

Esses namespaces contêm todas as classes, interfaces e enumerações para Visual Basic e Visual C# projetos. Para obter uma lista completa dos objetos no namespace, consulte Visual Basic e Visual C# objeto modelo de extensibilidade para projetos.

Possível erro usando os Assemblies VSLangProj com EnvDTE Assembly

Se você criar um projeto que faz referência a 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: System.IO.FileNotFoundException: Erro ao carregar o arquivo ' EnvDTE, versão = 7.0.3300.0 "

Esse erro é devido a um conflito de resolução de tipo de tempo de execução. Ou seja, a versão do EnvDTE que está incluído com o 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 do EnvDTE para o arquivo de configuração (. config) do. seu projeto Isso permitirá que Visual Studio para carregar a versão mais recente do EnvDTE e impedir que o erro ocorra.

Para fazer isso, adicione um "arquivo de configuração do aplicativo" ao seu projeto e, em seguida, substitua o seu conteúdo pelo 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 de 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 por genérico Project objeto. O Project o objeto tem um Object propriedade. O tipo desta propriedade é determinado em tempo de execução de linguagem do projeto. Em um Visual Basic ou Visual C# o projeto, o Object propriedade retorna um objeto do tipo VSProject2. Desde o tipo da Object propriedade é o objeto, você deve converter a referência ao tipo VSProject2. Em uma macro, a projeção aparência a seguir se o primeiro projeto foram uma Visual Basic projeto:

Imports EnvDTE
Imports EnvDTE80
Imports VSLangProj
Imports VSLangProj2
Imports VSLangProj80
Imports VSLangProj90
Imports VSLangProj100
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;
using VSLangProj90;
using VSLangProj100;
EnvDTE.Project proj;
VSLangProj80.VSproject2 vsproject;
proj = DTE2.Solution.Projects.Item(1);
vsproject = (VSLangProj80.VSProject2)proj.Object;

Depois de fazer referência a VSProject2 item, você pode manipular as 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ências e objetos de referência

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

O References objeto não contém as referências da Web de um projeto. Referências de Web do projeto poderão ser recuperadas, acessando o ProjectItems propriedade da WebReferencesFolder propriedade.

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

Objeto de importações

O Imports propriedade contida pelo VSProject2 objeto mantém uma coleção de Imports declarações que se aplicam a toda uma Visual Basic project. Se uma declaração imports for adicionada a esta coleção, correspondente a Imports instrução (por exemplo, Imports VSLangProj) não tem a ser adicionado ao arquivo de código. Este objeto oferece suporte adicionando e removendo instruções imports e geração de eventos em resposta a adição e remoção de instruções. Há nenhum equivalente em um Visual C# projeto e o VSProject2.Imports retorna a propriedade Nothing ou null quando aplicado a uma Visual C# project. Para obter mais informações, consulte Imports.

VSProjectItem e BuildManager objetos

O VSProjectItem o objeto é a contraparte do item de projeto da VSProject2 objeto. No modelo de extensibilidade geral, genérico ProjectItem objeto representa um item de projeto. O Object propriedade é do tipo Object e, em um Visual Basic ou Visual C# o projeto, o tipo desta propriedade é VSProjectItem. O objeto para digitar a projeção VSProjectItem teria esta aparência em uma macro:

Imports EnvDTE
Imports EnvDTE80
Imports VSLangProj
Imports VSLangProj2
Imports VSLangProj80
Imports VSLangProj90
Imports VSLangProj100
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;
using VSLangProj100;
EnvDTE.Project proj;
VSLangProj.VSProjectItem pi;
Pi = (VSProject2)DTE2.Solution.Projects.Item(1).ProjectItems.Item(1).
Object;

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

Propriedade Properties

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

  • Projectobjeto De propriedades desse objeto equivalem às propriedades encontradas na Propriedades comuns guia da caixa de diálogo de páginas de propriedades do projeto no IDE.

  • Configurationobjeto De propriedades desse objeto equivalem às propriedades encontradas na Propriedades de configuração guia da caixa de diálogo de páginas de propriedades do projeto no IDE.

  • ProjectItemobjeto De propriedades desse objeto equivalem às propriedades encontradas na Propriedades janela quando um item de projeto é selecionado na Solution Explorer.

  • Em cada caso de Properties propriedade é uma coleção de objetos do tipo de propriedade. A Property objeto pode ser obtido da coleção, especificando o índice de base 1 da propriedade ou o nome. O conteúdo da coleção depende do idioma. No caso de itens de projeto, o conteúdo também depende se o item é um arquivo ou pasta.

Consulte também

Conceitos

Espectro de automação do Visual Studio

Outros recursos

Criando Adicionar-