Compartilhar via


O Visual Studio Integration (MSBuild)

Visual Studio 2005 hosts MSBuild para carregar e compilação projetos gerenciado. Porque MSBuild é responsável pelo projeto, praticamente qualquer projeto na MSBuild formato pode ser usado com êxito 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 Visual Studio's MSBuild hospedagem que deve ser considerada ao Personalizando projetos e arquivos .targets que você deseja carregar e compilação em Visual Studio. Essas ajudará a tornar-se de Visual Studio recursos como o IntelliSense e depuração de trabalho para seu projeto personalizado.

arquivo de projeto Extensões de nome

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 de projeto, que determinar o sistema de projeto específico a um linguagem carregará o projeto. Visual Studio não tem uma linguagem neutra MSBuild sistema baseado em projeto.

Por exemplo, a Visual C# sistema de projeto carrega arquivos .csproj, mas Visual Studio não é capaz de carregar um arquivo .xxproj. Um arquivo de projeto para arquivos de fonte em uma linguagem arbitrário deve usar a mesma extensão sistema autônomo Visual Basic, Visual C#, ou Visual J# arquivos de projeto para ser carregado na Visual Studio.

Nomes conhecidos de destino

Clicando no Compilação comando Visual Studio será executar o destino de padrão de projeto. Em geral, esse destino também é chamado Build. Escolhendo o recompilar or Limpar comando tenta executar um destino de mesmo nome no projeto.Quando você clica em Publicar executará um destino chamado PublishOnly no projeto.

Plataformas e configurações

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

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

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

Ações adicionais de compilação

Visual Studio permite que você altere o nome de coleção de item de um arquivo em um projeto com o Criar ação propriedade do Propriedades de Arquivo janela. Compile, EmbeddedResource, Content, e None nomes de coleção de itens sempre estão listados neste menu, juntamente com quaisquer outros nomes de coleção de itens já em seu projeto. Para assegurar que os nomes de coleção de item personalizado estejam sempre disponível nesse menu, você pode adicionar os nomes a uma coleção de item denominada AvailableItemName. Por exemplo, adicionando o seguinte ao seu arquivo de projeto adicionará o tipo personalizado JScript Esse menu para todos os projetos que importá-lo:

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

Alguns nomes de coleção de item são especiais para Visual Studio mas não aparecer nesta lista suspensa.

Compiladores processo

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

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

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

  • Suporte somente o parâmetro valores devem ser 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.A seguir CSC valores de parâmetro de tarefa não oferece suporte a Visual C# compilador em processo:

    • NoConfig: false e os valores vazios não são suportados.

    • ResponseFiles: valores não vazios não são suportados.

    • AdditionalLibPaths: valores não vazios não são suportados.

    • AddModules: valores não vazios não são suportados.

    • CodePage: valores de zero não são suportados.

    • GenerateFullPaths: true não é suportado.

    • LinkResources: valores não vazios não são suportados.

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.

IntelliSense de time 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.

  • Ambos o Compile destino ou uma de suas dependências deve chamar a tarefa de compilador para o projeto sistema autônomo Csc ou Vbc.

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

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

Criação de soluções

Dentro de Visual Studio, o arquivo de solução e pedidos de compilação do projeto são controlados pela Visual Studio propriamente dito. Ao criar uma solução com msbuild.exe na linha de comando, MSBuild analisa o arquivo de solução e ordena as compilações do projeto. Em ambos os casos os projetos são construídos individualmente em ordem de dependência e referências de projeto para o projeto não são atravessado.Por outro lado, quando projetos individuais são construídos com msbuild.exe, são partilhadas com referências de projeto ao projeto.

Durante a criação de Visual Studio, a propriedade $(BuildingInsideVisualStudio) é conjunto para true. Isso pode ser usado em seu projeto ou arquivos .targets para fazer com que a compilação se comporte de maneira diferente.

Exibindo propriedades e itens

Visual Studio reconhece certos nomes de propriedades e valores. Por exemplo, a propriedade a seguir em um projeto fará com que aplicativos do Windows apareça no Tipo de aplicativo caixa de a Designer de projeto.

<OutputType>WinExe</OutputType>

O valor da propriedade pode ser editado no Designer de projeto e salvos no arquivo de projeto.Se essa propriedade é dado um valor inválido por edição mão Visual Studio irá exibir um aviso quando o projeto for carregado e substitua o valor inválido com um valor padrão.

Visual Studio entende os padrões de algumas propriedades. Essas propriedades não serão persistentes para o 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 as propriedades arbitrárias em Visual Studio, você deve em em aberto o arquivo de projeto no editor de XML e editá-los manualmente. Para obter mais informações, consulte Como: edição arquivos de projeto.

Itens definidos no projeto com nomes de coleção arbitrária de item são por padrão exibido no gerenciador de soluções sob o nó de projeto.Para ocultar um item da exibição, defina o Visible metadados para false. Por exemplo, o seguinte item irá participar do processo de compilação de mas não ser exibido no gerenciador de soluções.

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

Itens declarados em arquivos importados para o projeto não são exibidas por padrão.Itens criados durante o processo de compilação nunca são exibidos no gerenciador de soluções.

Condições de itens e propriedades

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

Ao determinar os valores de propriedade para exibir propriedades que Visual Studio considera dependente da configuração são avaliadas de maneira diferente de propriedades considera configuração independente. Propriedades de configuração dependente, consideraVisual Studio Define o Configuration e Platform propriedades adequadamente e orienta o MSBuild para 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 ignorados para fins de decidir se o item deve ser exibido no gerenciador de soluções.

Depuração

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

Execução de destino do time de design

Visual Studio tenta executar destinos com determinados nomes ao carregar um projeto. Esses destinos incluem Compile, ResolveAssemblyReferences, ResolveCOMReferences, GetFrameworkPaths, e CopyRunEnvironmentFiles. Visual Studio executa esses destinos para 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 irá carregar e compilar corretamente, mas a experiência de time de design no Visual Studio não será totalmente funcional.

Editando arquivos de projeto no Visual Studio

Quando é necessário edição um MSBuild projeto diretamente, você pode em em aberto o projeto arquivo na Visual Studio Editor de XML. Para obter mais informações, consulte Como: edição arquivos de projeto.

O IntelliSense e validação

Ao usar o editor XML para edição arquivos de projeto, validação e IntelliSense é orientada pelo MSBuild arquivos de esquema. Estes são instalados por Visual Studio no cache do esquema, que pode ser encontrado em [aVisual Studio local de instalação] \Xml\Schemas pasta.

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

Editando arquivos de projeto carregado

Visual Studio armazena em cache o conteúdo do projeto arquivos e arquivos importados pelos arquivos de projeto. Se você edição um arquivo de projeto carregado, Visual Studio automaticamente solicitará que você recarregar o projeto para que as alterações tenham efeito. No entanto se você edição um arquivo importado por um projeto carregado, não será nenhum aviso de recarga e você deve descarregar e recarregar o projeto manualmente para fazer 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 Studio chama esses destinos para obter listas específicas das saídas de projeto. Por exemplo, a SatelliteDllsProjectOutputGroup destino cria uma lista de todos os assemblies de satélite que 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 os defina irão carregar e compilar em Visual Studio, mas alguns recursos talvez não funcionem 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 real.Visual Studio deve acionar a resolução de referência para mostrar as propriedades detalhadas para cada referência da Propriedades janela.A lista a seguir descreve os três tipos de referências e como são resolvidos.

  • Referências de assembly:

    O sistema de projeto chama um destino com o nome conhecido ResolveAssemblyReferences. Este destino deve produzir os itens com o nome de item de coleção ReferencePath. Cada um desses itens deve ter uma especificação de item (o valor do 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 juntamente com os seguintes novos metadados:

    • CopyLocal, que indica se o assembly deve ser copiado para a pasta de saída, conjunto como verdadeiro ou falso.

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

    • ResolvedFrom, conjunto para "{TargetFrameworkDirectory}" se ele foi resolvido da .NET Framework diretório.

  • Referências COM:

    O sistema de projeto chama um destino com o nome conhecido ResolveCOMReferences. Este destino deve produzir os itens com o nome de item de coleção ComReferenceWrappers. Cada um desses itens deve ter uma especificação de item que contém o caminho completo para o assembly de interoperabilidade para referência COM.Os itens devem ter todos os metadados dos itens de entrada passou, juntamente com novos metadados com o nome de 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. Este destino deve produzir os itens com o nome de item de coleção NativeReferenceFile. Os itens devem ter todos os metadados dos itens de entrada passou, juntamente com uma nova parte dos metadados chamado OriginalItemSpec, que contém a especificação do item original da referência.

Consulte também

Referência

Elemento do item (MSBuild)

Elemento de propriedade (MSBuild)

Elemento de destino (MSBuild)

Tarefa CSC

Tarefa Vbc

Outros recursos

Conceitos do MSBuild