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