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, VSLangProj2, VSLangProj80 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.
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.
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>
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.
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.
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.
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.
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.