Pergunta

Estou tentando gerar uma versão de lançamento sem nenhum arquivo pdb gerado.Tenho visto vários posts que sugerem clicar com o botão direito do mouse no projeto, selecionar Propriedades, ir para a aba Construir e depois para Avançado...butoon e alterando Debug Info para nenhum.Isso funciona e tudo, mas preciso fazer isso para uma compilação de cerca de 50 soluções que contenham cerca de 25 projetos cada!Outras postagens mencionam a edição do arquivo .csproj apropriado, mas, novamente, com tantos projetos, isso levaria muito tempo.Existe alguma maneira de conseguir isso através do arquivo TFSBuild.proj?

Tentei adicionar o seguinte ao arquivo TFSBuild.proj, sem sorte.

<PropertyGroup>
  <Configuration>Release</Configuration>
  <Platform>AnyCPU</Platform>
</PropertyGroup>

<PropertyGroup>
  <DebugSymbols>false</DebugSymbols>
  <DebugType>none</DebugType>
  <Optimize>true</Optimize>
</PropertyGroup>

A linha a seguir imprime Release|AnyCPU, none e false, mas ainda vejo o arquivo .pdb na pasta $(OutputDir).

<Message Text="$Configuration|Platform): $(Configuration)|$(Platform)" />
<Message Text="DebugType is: $(DebugType)"/>
<Message Text="DebugSymbols is: $(DebugSymbols)"/>

Obrigado antecipadamente, urvi

Foi útil?

Solução

Não tenho certeza (não tenho o team build instalado), mas é muito provável que quando você altera essas propriedades no projeto TFSBuild, elas não se propaguem para os arquivos reais do projeto, já que as soluções/projetos reais são construídos iniciando outra tarefa do MSBuild e o destino responsável em Microsoft.TeamFoundation.Build.targets não passa essas propriedades para a tarefa.

Por exemplo, este é o alvo "CallCompile" no arquivo mencionado (novamente, não tenho certeza se é isso que seu build usa o cenário, mas a ideia é a mesma):

<Target Name="CallCompile" DependsOnTargets="$(CoreCompileDependsOn)">
  <!-- Pass in all properties that users might want during the course of the compile targets. -->
  <MSBuild Projects="$(MSBuildProjectFile)"
           Properties="a lot of properties, but not DebugSymbols etc"
           Targets="CoreCompile">
  </MSBuild>
</Target>

Então você poder consiga adicionar as propriedades desejadas ao arquivo de destino, mas:

  • isso significa que você precisa alterar esse arquivo toda vez que atualizar
  • pode não ser o comportamento desejado para todos os seus projetos
  • por último, mas não menos importante:se os arquivos do projeto invocados também contiverem DebugSymbols/..., os valores das propriedades no seu arquivo simplesmente substituirão aqueles passados ​​pela tarefa do MSBuild, portanto, no final, você ainda terá que alterar todos os arquivos do projeto para lidar com isso

Uma maneira de conseguir o que você deseja é escrever um script no idioma de sua escolha que liste todos os arquivos *.csproj em um determinado diretório e, em seguida, modifique cada arquivo para substituir verdadeiro por falso.Ou ainda mais rápido:faça uma pesquisa em *.csproj no explorer, abra todos os arquivos de uma vez em um editor e execute Localizar/Substituir em todos os arquivos abertos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top