Does MSBUILD reconhece quaisquer outros que DEBUG configurações de compilação | DIVULGAÇÃO

StackOverflow https://stackoverflow.com/questions/606660

  •  03-07-2019
  •  | 
  •  

Pergunta

Eu criei uma configuração chamada Test via Visual Studio que atualmente só tem todas as configurações de depuração, no entanto I Condições do compilador empregam para determinar algumas ações específicas se a compilação passa a ser TEST | DEBUG | RELEASE.

No entanto como eu posso conseguir o meu script MSBUILD para detectar a configuração de teste ??

Atualmente eu construção

 <MSBuild Projects="@(SolutionsToBuild)" Properties="Configuration=$(Configuration);OutDir=$(BuildDir)\Builds\" />

Onde @ (SolutionsToBuild) é um a minha solução. No Comum MsBuild Propriedades do projeto afirma que $ (Configuração) é um propriedade comum, mas ele sempre aparece em branco?

Isso significa que nunca fica definido, mas é simplesmente reservado para meu uso, ou que ele só pode detectar DEBUG | RELEASE. Se assim o que é o ponto em que permite a criação de diferentes configurações de compilação?

Foi útil?

Solução

Eu não tenho feito muito com a definição de um arquivo de configuração MSBUILD mas tenho feito constrói de diferentes configurações usando um arquivo de lote como esta

msbuild /v:n /p:Configuration=Release "Capture.sln" 
msbuild /v:n /p:Configuration=ReleaseNoUploads "Capture.sln" 

I definiu os ReleaseNoUploads de configuração dentro do Visual Studio.

Aqui está o que eu tinha que fazer para que (este é o Visual Studio 2005):

  • Abra o Ferramentas: Opções menu, vá para Projetos e Soluções: Geral opção e verificação Mostrar configurações de compilação avançadas
  • De lá, vá para o Constituição: Configuração menu Gestor
  • Na caixa de diálogo que aparece, clique no solução ativa de configuração suspenso e clique em para criar uma nova configuração de compilação.

Outras dicas

Claro, você pode ter tantas configurações de compilação personalizado como você deseja definir. Veja esta questão relacionada para a forma como a instalação pode parecer.

Como implantar condicionalmente um app.config com base na configuração de compilação?

Note que quando 'dentro visual studio', o $ (Configuração) e $ (Platform) são sempre definidas por VS usando o material Configuration Manager nos menus suspensos na parte superior. Considerando que, se você deseja definir esses valores usando msbuild na linha de comando, você deve passar nos valores explicitamente (como na resposta da @ MarkBiek).

(modelos de projeto a maioria dos SV vai 'default em' um valor para a configuração / plataforma, de modo que você pode usar a linha de comando MSBuild sem especificar esses valores explicitamente. Isso é bom, mas faz com que essas duas propriedades úteis / comum aparecer uma pouco mais mágico / estranho do que realmente são.)

Normalmente o que eu faço para ter lançamento e depuração tanto compilação de um único script MSBuild é:

<PropertyGroup Condition="'$(Configuration)'==''">
  <Configuration>Debug;Release</Configuration>
</PropertyGroup>

Em seguida, adicione isso, mas de MSBuild molho secreto:

   <Target Name="configurations">
     <CreateItem Include="$(Configuration)">
       <Output TaskParameter="Include" ItemName="Configuration" />
     </CreateItem>
   </Target>

E, em seguida, para cada alvo fazer algo como isto:

  <Target Name="Compile" DependsOnTargets="configurations" Inputs="@(Configuration)" Outputs="target\%(Configuration.FileName)">
    <MSBuild Projects="@(MyProjects)" Targets="Build" Properties="Configuration=%(Configuration.Identity);WarningLevel=1" />
  </Target>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top