Integração de Visual Studio (MSBuild)

O Visual Studio hospeda MSBuild para carregar e criar projetos gerenciados.Porque MSBuild é responsável pelo projeto, quase qualquer projeto no formato de MSBuild com êxito pode ser usado em Visual Studio, mesmo se o projeto foi criado por uma ferramenta diferente e tem um processo de compilação personalizada.

Este tópico descreve os aspectos específicos de hospedagem de Visual StudioMSBuild que devem ser considerados ao personalizar os projetos e arquivos .targets que você deseja carregar e compilar em Visual Studio.Esses ajudarão a certificar-se de recursos de Visual Studio como o IntelliSense e depuração funcionar para seu projeto personalizado.

Extensões de nome de arquivo de Projeto

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

Por exemplo, os arquivos carrega do sistema .csproj de projeto de Visual C# , mas Visual Studio não podem carregar um arquivo de .xxproj.Um arquivo de projeto para arquivos de origem em um idioma arbitrário deve usar a mesma extensão que Visual Basic ou arquivos de projeto de Visual C# sejam carregados em Visual Studio.

Nomes de destino conhecidos

Clicando no comando de Compilar em Visual Studio executará o destino padrão no projeto.Geralmente, este destino também é chamado Build.Escolha o comando de Recompilar ou de Limpar tentará executar um destino de mesmo nome no projeto.Clicando Publicar executar um alvo nomeado PublishOnly no projeto.

Configurações e plataformas

As configurações são representadas em projetos de MSBuild pelas propriedades agrupadas em um elemento de PropertyGroup que contém um atributo de Condition .Visual Studio examinar essas condições para criar uma lista das configurações e de plataformas de projeto para exibir.Para extrair com êxito 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 Studio observar as condições em PropertyGroup, em ItemGroup, em Import, a propriedade, e os elementos de item para essa finalidade.

Ações adicionais de compilação

Visual Studio permite que você altere o nome do tipo de item de um arquivo em um projeto com a propriedade de Ação de Compilação da janela de Propriedades de arquivo .Compile, EmbeddedResource, Content, e nomes de tipo de item de None sempre são listados nesse menu, junto com quaisquer outros nomes de tipo de item já em seu projeto.Para garantir todos os nomes de tipo personalizados de item está sempre disponível no menu, você pode adicionar os nomes para um tipo de item chamado AvailableItemName.Por exemplo, adicionando o seguinte ao seu arquivo de projeto adicionará o tipo personalizado JScript a esse menu para todos os projetos que o importam:

<ItemGroup>
    <AvailableItemName Include="JScript"/>
</ItemGroup>
ObservaçãoObservação

Alguns nomes de tipo de item são especiais a Visual Studio mas são listados nessa lista suspensa.

Compiladores em processo

Quando possível, Visual Studio tentará usar as versões em processo dos compiladores de Visual Basic ou de Visual C# para desempenho gerado.Para que isso funcione corretamente, as seguintes condições devem ser atendidas:

  • Em um destino do projeto, deve haver uma tarefa chamada Csc (para projetos de Visual C# ) ou Vbc (para projetos de Visual Basic )

  • O parâmetro de UseHostCompilerIfAvailable de tarefa deve ser definida como true.

  • Somente os valores de parâmetro devem ser suportados especificados.Todos os parâmetros especificados na tarefa são suportados pelo compilador em processo, mas alguns valores de parâmetro são sem suporte.Os seguintes valores de parâmetro da tarefa de Csc não são suportados pelo compilador em processo de Visual C# :

    • NoConfig: false e os valores vazios são sem suporte.

    • ResponseFiles: os valores vazios não são sem suporte.

    • AdditionalLibPaths: os valores vazios não são sem suporte.

    • AddModules: os valores vazios não são sem suporte.

    • CodePage: os valores diferente de zero é sem suporte.

    • GenerateFullPaths: true não é suportado.

    • LinkResources: os valores vazios não são sem suporte.

Se essas condições não forem atendidas, o projeto será compilado usando o compilador de linha de comando em vez do compilador em processo.

O IntelliSense tempo de design

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

  • Deve haver um alvo nomeado Compile.

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

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

  • As condições listadas na seção “os compiladores em processo” devem ser atendidas.

Soluções de compilação

Dentro de Visual Studio, a compilação ordenação é controlada por Visual Studio própria o arquivo de solução e projeto.Ao criar uma solução com o msbuild.exe na linha de comando, MSBuild analisa o arquivo de solução e que as compilações de projeto.Os projetos são compilados em ambos os casos individualmente na ordem de dependência, e o projeto projetar referências não é transmitido.Por outro lado, quando os projetos individuais são criados com msbuild.exe, o projeto projetar referências é transmitido.

Ao criar dentro de Visual Studio, a propriedade $(BuildingInsideVisualStudio) é definida como true.Isso pode ser usado em seu projeto ou em arquivos .targets fazer com que a compilação se comportam de forma diferente.

Exibindo propriedades e itens

Visual Studio reconhece determinados nomes e valores de propriedade.Por exemplo, a seguinte propriedade em um projeto fará com que Aplicativo de Windows aparece na caixa de Tipo de aplicativo em Designer de Projeto.

<OutputType>WinExe</OutputType>

O valor da propriedade pode ser editado em Designer de Projeto e salvo no arquivo de projeto.Se tal propriedade recebe um valor inválido por mão- edição, Visual Studio mostrará um aviso quando o projeto é carregado e substituirá o valor válido com um valor padrão.

Visual Studio entende opções para algumas propriedades.Essas propriedades não serão mantidas no arquivo de projeto a menos que não têm valores padrão.

As propriedades com nomes arbitrários não são exibidas em Visual Studio.Para alterar propriedades arbitrárias de Visual Studio, você deve abrir o arquivo de projeto no editor XML e editar-las manualmente.Para obter mais informações, consulte a seção de Arquivos de projeto no Visual Studio posteriormente neste tópico.

Os itens definidos no projeto com nomes arbitrários de tipo de item por padrão são exibidos no solution Explorer sob o nó do projeto.Para ocultar um item de exibição, defina os metadados de Visible a false.Por exemplo, o seguinte item participará no 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 no 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.

Para determinar valores de propriedade exibir, propriedades que Visual Studio considera dependente de configuração é avaliado diferente de propriedades considera independentes de configuração.Para propriedades considera dependente de configuração, Visual Studio define as propriedades de Configuration e de Platform apropriadamente e instrui MSBuild para reavaliar o projeto.Para propriedades considera independentes de configuração, ele é indefinido como as condições serão avaliadas.

As expressões condicionais em itens são ignoradas sempre para fins de decidir se o item deve ser exibido no solution Explorer.

Depuração

Para localizar e iniciar o conjunto de saída e anexar o depurador, Visual Studio precisa as propriedades OutputPath, AssemblyName, e OutputType definida corretamente.O depurador não irá anexar se o processo de compilação não fez com que o compilador produz um arquivo de .pdb.

Execução tempo de design de destino

Visual Studio tentar executar destinos com determinados nomes quando ele carrega um projeto.Esses destinos incluem Compile, ResolveAssemblyReferences, ResolveCOMReferences, GetFrameworkPaths, e CopyRunEnvironmentFiles.Visual Studio executa esses destinos de modo 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 estão presentes, o projeto será carregado e compilação corretamente mas a experiência em tempo de design em Visual Studio não será - totalmente funcional.

Arquivos de projeto no Visual Studio

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

Para descarregar e editar um arquivo de projeto no Visual Studio

  1. Em Gerenciador de Soluções, abra o menu de atalho para o projeto, escolha Descarregar projeto.

    O projeto está marcado (unavailable).

  2. Em Gerenciador de Soluções, abra o menu de atalho para o projeto não disponível, escolha Editar <Project File>.

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

  3. A edição, salvar, e então fecha o arquivo de projeto.

  4. Em Gerenciador de Soluções, abra o menu de atalho para o projeto não disponível, escolha Recarregar projeto.

O IntelliSense e validação

Ao usar o editor XML para editar arquivos de projeto, IntelliSense e validação são orientados pelos arquivos de esquema de MSBuild .Este é instalado por Visual Studio esquema em cache, que pode estar localizado em [] do local da instalação deVisual Studio pasta \ \ esquemas XML.

Os tipos de MSBuild principais são definidos em Microsoft.Build.Core.xsd e os tipos comuns usados por Visual Studio são definidos em Microsoft.Build.CommonTypes.xsd.Para personalizar os esquemas de modo que você tenha o IntelliSense e a validação para nomes personalizados, propriedades, e tarefas de tipo de item, você pode editar ou Microsoft.Build.xsd, ou crie seu próprio esquema que inclui esquemas de CommonTypes ou de básicos.Se você criar seu próprio esquema você terá que direcionar o editor XML para ser que usa a janela de Propriedades .

Editando arquivos de projeto carregados

Visual Studio armazenar em cache o conteúdo dos arquivos de projeto e os arquivos importados por arquivos de projeto.Se você edita um arquivo de projeto carregado, Visual Studio irá pedir automaticamente para recarregar o projeto para que as alterações tenham efeito.No entanto se você editar um arquivo importado por um projeto carregado, haverá nenhum recarrega o aviso e você deve descarregar e recarregar o projeto manualmente fazer as alterações tomar o efeito.

Grupos de saída

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

Resolução de referência

A 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 Studio deve acionar a resolução de referência para mostrar propriedades detalhadas para cada referência na janela de Propriedades .A lista a seguir descreve os três tipos de referências e como eles são resolvidos.

  • Referências de assembly:

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

    • CopyLocal, indicando se o assembly deve ser copiado na pasta de saída, conjunto para verdadeiro ou falso.

    • OriginalItemSpec, contendo a especificação de item original de referência.

    • ResolvedFrom, definida como “{}” TargetFrameworkDirectory se foi resolvido do diretório de .NET Framework .

  • Referências COM:

    Chamadas de sistema do projeto um destino com o nome conhecido ResolveCOMReferences.Este destino deve gerar itens com o nome ComReferenceWrappersde tipo de item.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 COM.Os itens devem ter todos os metadados de itens de entrada passados por, além de novos metadados com o nome CopyLocal, indicando se o assembly deve ser copiado na pasta de saída, conjunto para verdadeiro ou falso

  • Referências nativos

    Chamadas de sistema do projeto um destino com o nome conhecido ResolveNativeReferences.Este destino deve gerar itens com o nome NativeReferenceFilede tipo de item.Os itens devem ter todos os metadados de itens de entrada passados por, além do que uma nova parte de OriginalItemSpecchamado metadados, contendo a especificação de item original de referência.

Atalhos de desempenho

Se você iniciar a depuração no Visual Studio interface do usuário (escolhendo tecla F5 ou escolha Depurar, Iniciar Depuração na barra de menus), o processo de compilação usa uma verificação rápida de atualização para melhorar o desempenho.Em alguns casos onde as compilações personalizadas criar os arquivos que obtêm compilado por sua vez, a verificação rápida de atualização não identifica corretamente os arquivos alterados.Projetos que precisam verificações mais completas de atualização podem desativar verificar rápido definir a variável de ambiente DISABLEFASTUPTODATECHECK=1.Como alternativa, os projetos podem definir esse como uma propriedade do MSBuild no projeto ou arquivo o projeto importa.

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

Consulte também

Tarefas

Como: estende o processo de compilação de Visual Studio

Referência

Elemento de item (MSBuild)

Elemento de propriedade (MSBuild)

Elemento de destino (MSBuild)

Tarefa CSC

Tarefa Vbc

Conceitos

Iniciar uma compilação de dentro do IDE

Registrando as extensões da.NET Framework

Outros recursos

Conceitos do MSBuild