Partilhar via


Integração com o Visual Studio (MSBuild)

Hosts do visuais Studio MSBuild para carregar e compilar projetos gerenciados. Como MSBuild é responsável pelo projeto, quase qualquer projeto no MSBuild formato pode ser usado com êxito no Visual Studio, mesmo que o projeto foi criado por uma ferramenta diferente e tem um processo de compilação.

Este tópico descreve os aspectos específicos da Visual Studiodo MSBuild de hospedagem que deve ser considerado ao personalizar projetos e arquivos. targets que você deseja carregar e compilar Visual Studio. Eles ajudarão Certifique-se de Visual Studio recursos como o IntelliSense e depuração de trabalho do seu projeto personalizado.

Para obter informações sobre projetos do C++, consulte Arquivos de projeto.

Extensões de Nome do Arquivo de Projeto

MSBuild.exe reconhece qualquer extensão de nome de arquivo do projeto correspondentes ao padrão. * proj. No entanto, Visual Studio reconhece apenas um subconjunto dessas extensões de nome de arquivo projeto, que determinam o sistema de projeto de linguagem específica que irá carregar o projeto. Visual Studionão tem um idioma neutro MSBuild com base em sistema de projeto.

Por exemplo, o Visual C# sistema de projeto carrega os arquivos. csproj, mas Visual Studio não é possível carregar um arquivo .xxproj. Um arquivo de projeto para arquivos de origem em uma linguagem arbitrário deve usar a mesma extensão Visual Basic ou Visual C# arquivos a serem carregados no projeto Visual Studio.

Nomes de Destino Bem Conhecidos

Clicar a Build do Visual Studio executará o destino padrão no projeto. Geralmente, esse destino também é denominado Build. Escolhendo o recriar ou limpar comando tentará executar um destino de mesmo nome no projeto. Clicar em publicar executará um destino chamado PublishOnly no projeto.

Configurações e Plataformas

As configurações são representadas no MSBuild projetos por propriedades agrupadas em uma PropertyGroup elemento que contém um Condition atributo. Visual Studioexamina essas condições para criar uma lista de plataformas para exibir e configurações de projeto. Para extrair com sucesso, essa lista, as condições devem ter um formato semelhante ao seguinte:

Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "
Condition=" '$(Configuration)' == 'Release' " 
Condition=" '$(Something)|$(Configuration)|$(SomethingElse)' == 'xxx|Debug|yyy' "

Visual Studioexamina as condições PropertyGroup, ItemGroup, Import, propriedade e elementos de item para essa finalidade.

Ações de Compilação Adicionais

Visual Studiopermite que você altere o nome do tipo de item de um arquivo em um projeto com o Build Action propriedade o Propriedades de arquivo janela. Compile, EmbeddedResource, Content, e None nomes de tipo de item sempre são listados no menu, juntamente com quaisquer outros nomes de tipo de item já está em seu projeto. Para garantir que os nomes de tipo de item personalizado estão sempre disponíveis nesse menu, você pode adicionar o nome a um tipo de item chamado AvailableItemName. Por exemplo, adicionar o seguinte ao arquivo de projeto adicionará o tipo personalizado JScript esse menu para todos os projetos que importá-lo:

<ItemGroup>
    <AvailableItemName Include="JScript"/>
</ItemGroup>

Dica

Alguns nomes de tipo de item são especiais para Visual Studio , mas não aparecer nesse menu suspenso.

Compiladores em Processo

Quando possível, Visual Studio tentará usar a versão no processo de Visual Basic compilador para melhorar o desempenho. (Não aplicável ao Visual C#.) Para que isso funcione corretamente, as seguintes condições devem ser atendidas:

  • Em um destino do projeto, deve haver uma tarefa chamada Vbc para Visual Basic projetos.

  • O UseHostCompilerIfAvailable parâmetro da tarefa deve ser definido como true.

IntelliSense do Tempo de Design

Para obter suporte do IntelliSense em Visual Studio antes de uma compilação gerou um assembly de saída, as seguintes condições devem ser atendidas:

  • Deve haver um destino chamado Compile.

  • Tanto o Compile destino ou uma de suas dependências deve chamar a tarefa do compilador do projeto, como Csc ou Vbc.

  • Tanto o Compile destino ou uma de suas dependências deve fazer com que o compilador receber todos os parâmetros necessários para IntelliSense, particularmente todas as referências.

  • As condições listadas na seção "Compiladores em processo" devem ser atendidas.

Compilando Soluções

Dentro de Visual Studio, o arquivo de solução e a ordem de compilação de projeto são controladas por Visual Studio em si. Ao criar uma solução com msbuild.exe na linha de comando, MSBuild analisa o arquivo de solução e ordena o projeto é compilado. Em ambos os casos os projetos são compilados individualmente em ordem de dependência e referências de projeto para projeto não são percorridas. Por outro lado, quando projetos individuais criados com msbuild.exe, referências de projeto a projeto são percorridas.

Ao criar dentro Visual Studio, a propriedade $(BuildingInsideVisualStudio) está definida como true. Isso pode ser usado em seus arquivos de projeto ou. targets para fazer com que a compilação se comportar de maneira diferente.

Exibindo Propriedades e Itens

Visual Studioreconhece determinados nomes de propriedades e valores. Por exemplo, fará com que a propriedade a seguir em um projeto Windows Application apareçam no tipo de aplicativo caixa o Project Designer.

<OutputType>WinExe</OutputType>

O valor da propriedade pode ser editado no Project Designer e salvo no arquivo de projeto. Se essa propriedade tem um valor inválido pela edição manual, Visual Studio irá exibir um aviso quando o projeto for carregado e substitua o valor inválido com um valor padrão.

Visual StudioEntenda os padrões para algumas propriedades. Essas propriedades não serão mantidas no arquivo de projeto, a menos que tenham valores não-padrão.

Propriedades com nomes arbitrários não são exibidas em Visual Studio. Para modificar propriedades arbitrárias em Visual Studio, você deve abrir o arquivo de projeto no editor XML e editá-los manualmente. Para obter mais informações, consulte o editando arquivos de projeto no Visual Studio seção mais adiante neste tópico.

Itens definidos no projeto com nomes de tipo de item arbitrário são por padrão exibido no Solution Explorer sob o nó do projeto. Para ocultar um item da exibição, defina o Visible metadados para false. Por exemplo, o item a seguir será participem do processo de compilação, mas não ser exibido no Solution Explorer.

<ItemGroup>
    <IntermediateFile Include="cache.temp">
        <Visible>false</Visible>
    </IntermediateFile>
</ItemGroup>

Os itens declarados em arquivos importados para o projeto não são exibidos por padrão. Os itens criados durante o processo de compilação nunca são exibidos no Solution Explorer.

Condições em Itens e Propriedades

Durante uma compilação, todas as condições são respeitadas totalmente.

Ao determinar os valores de propriedade para exibir propriedades que Visual Studio considera depende da configuração são avaliadas de maneira diferente que propriedades considera configuração independente. Para propriedades considera configuração dependentes, Visual Studio define o Configuration e Platform propriedades adequadamente e instrui MSBuild a reavaliar o projeto. Para propriedades ele considera configuração independente, é indeterminado como condições serão avaliadas.

Expressões condicionais em itens são sempre ignoradas para fins de decidir se o item deve ser exibido no Gerenciador de soluções.

Depuração

Para localizar e iniciar o assembly de saída e anexar o depurador Visual Studio precisa as propriedades OutputPath, AssemblyName, e OutputType definida corretamente. O depurador não conseguirá conectar-se o processo de compilação não com que o compilador gerar um arquivo. PDB.

Execução de Destino do Tempo de Design

Visual Studiotenta executar destinos com determinados nomes quando ele carrega um projeto. Esses destinos incluem Compile, ResolveAssemblyReferences, ResolveCOMReferences, GetFrameworkPaths, e CopyRunEnvironmentFiles. Visual Studioexecuta esses destinos que o compilador pode ser inicializado para fornecer o IntelliSense, o depurador pode ser inicializado e referências exibidas no Gerenciador de soluções podem ser resolvidas. Se esses destinos não estiverem presentes, o projeto carregará e compilar corretamente, mas a experiência de tempo de design no Visual Studio não estarão totalmente funcionais.

Editando Arquivos de Projeto no Visual Studio

Para editar um MSBuild diretamente do projeto, você poderá abrir o arquivo de projeto no editor de XML do Visual Studio.

Para descarregar e editar um arquivo de projeto no Visual Studio

  1. Em Solution Explorer, abra o menu de atalho do projeto e escolha descarregar projeto.

    O projeto está marcado (não disponível).

  2. Em Solution Explorer, abra o menu de atalho para o projeto não está disponível e, em seguida, escolha Editar < arquivo de projeto >.

    O arquivo de projeto é aberto no Editor de XML do Visual Studio.

  3. Editar, salvar e feche o arquivo de projeto.

  4. Em Solution Explorer, abra o menu de atalho para o projeto não está disponível e, em seguida, escolha recarregar projeto.

IntelliSense e Validação

Ao usar o editor XML para editar arquivos de projeto, o IntelliSense e a validação é controlada pelo MSBuild arquivos de esquema. Eles são instalados no cache do esquema, que pode ser encontrado em < diretório de instalação do Visual Studio >\Xml\Schemas\1033\MSBuild.

O núcleo MSBuild tipos são definidos em Microsoft.Build.Core.xsd e tipos comuns usados por Visual Studio são definidos em Microsoft.Build.CommonTypes.xsd. Para personalizar os esquemas para que você tenha o IntelliSense e validação de nomes de tipo de item personalizado, propriedades e tarefas, você pode editar Microsoft.Build.xsd ou criar seu próprio esquema que inclui os esquemas CommonTypes ou principal. Se você criar seu próprio esquema, será necessário direcionar o XML editor para localizá-lo usando o propriedades janela.

Editando Arquivos de Projeto Carregados

Visual Studioarmazena em cache o conteúdo dos arquivos de projeto e arquivos importados por arquivos de projeto. Se você editar um arquivo de projeto carregado, Visual Studio será automaticamente solicitado a recarregar o projeto para que as alterações tenham efeito. No entanto se você editar um arquivo importado por um projeto carregado, não haverá nenhum prompt recarregar e é necessário descarregar e recarregar o projeto manualmente para que as alterações tenham efeito.

Grupos de Saída

Vários destinos definidos no Microsoft.Common.targets têm nomes que terminam em OutputGroups ou OutputGroupDependencies. Visual Studiochama esses destinos para obter listas específicas das saídas de projeto. Por exemplo, o SatelliteDllsProjectOutputGroup destino cria uma lista de todos os assemblies satélites criará uma compilação. Esses grupos de saída são usados por recursos como referências de projeto para projeto, implantação e publicação. Projetos que não defini-los carregará e compilar em Visual Studio, mas alguns recursos podem não funcionar corretamente.

Resolução de Referência

Resolução de referência é o processo de usar os itens de referência armazenados em um arquivo de projeto para localizar assemblies reais. Visual Studiodeve disparar a resolução de referência para mostrar propriedades detalhadas para cada referência no propriedades janela. A lista a seguir descreve os três tipos de referências e como eles são resolvidos.

  • Referências de assembly:

    O sistema de projeto chama um destino com o nome conhecido ResolveAssemblyReferences. Esse destino deve produzir itens com o nome do tipo de item ReferencePath. Cada um desses itens deve ter uma especificação de item (o valor de Include atributo de um item) que contém o caminho completo para a referência. Os itens devem ter todos os metadados dos itens de entrada passou além dos novos metadados a seguir:

    • CopyLocal, que indica se o assembly deve ser copiado para a pasta de saída, definido como true ou false.

    • OriginalItemSpec, que contém a especificação de item original da referência.

    • ResolvedFrom, definido como "{TargetFrameworkDirectory}" se ele foi resolvido o .NET Framework directory.

  • Referências COM:

    O sistema de projeto chama um destino com o nome conhecido ResolveCOMReferences. Esse destino deve produzir itens com o nome do tipo de item ComReferenceWrappers. Cada um desses itens deve ter uma especificação de item que contém o caminho completo para o assembly de interoperabilidade para a referência ao COM. Os itens devem ter todos os metadados dos itens de entrada passados por meio, além disso, aos novos metadados com o nome CopyLocal, que indica se o assembly deve ser copiado para a pasta de saída, definido como true ou false

  • Referências nativas

    O sistema de projeto chama um destino com o nome conhecido ResolveNativeReferences. Esse destino deve produzir itens com o nome do tipo de item NativeReferenceFile. Os itens devem ter todos os metadados dos itens de entrada passou, além de uma nova parte de metadados chamada OriginalItemSpec, que contém a especificação de item original da referência.

Atalhos de Desempenho

Se você iniciar a depuração na IU do Visual Studio (escolha a tecla F5 ou escolhendo depurar, Start Debugging na barra de menus), o processo de compilação usa uma verificação rápida atualização para melhorar o desempenho. Em alguns casos onde compilações personalizadas criam arquivos compilados por sua vez, a verificação de atualização rápida não identifica corretamente os arquivos alterados. Projetos que precisam de verificações de atualização mais completas podem desativar a verificação rápida, definindo a variável de ambiente DISABLEFASTUPTODATECHECK=1. Como alternativa, os projetos podem definir isso como uma propriedade do MSBuild do projeto ou em um arquivo de que projeto importa.

Para compilações regulares no Visual Studio, não se aplica a verificação de atualização rápida e o projeto será criado como se você chamou a compilação em um prompt de comando.

Consulte também

Tarefas

Como estender o processo de compilação do Visual Studio

Referência

Elemento Item (MSBuild)

Elemento Property (MSBuild)

Elemento Target (MSBuild)

Tarefa Csc

Tarefa Vbc

Conceitos

Iniciando uma compilação pelo IDE

Registrando extensões do .NET Framework

Outros recursos

Conceitos do MSBuild