Question

Je suis en train de générer une version validée sans pdb générés. Je l'ai vu de nombreux messages qui suggèrent un clic droit sur le projet, sélectionnez Propriétés, allant dans l'onglet Build, puis à l'avancée ... butoon et l'évolution des informations de débogage à aucun. Cela fonctionne et tout, mais je dois le faire pour une version de 50 ~ solutions qui contiennent ~ 25 projets chacun! D'autres messages mentionnent la modification du fichier .csproj approprié, mais encore une fois, avec tant de projets, cela prendra beaucoup de temps. Y at-il moyen d'y parvenir via le fichier TFSBuild.proj?

Je l'ai essayé d'ajouter ce qui suit au fichier TFSBuild.proj, avec pas de chance.

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

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

La ligne suivante imprime Release | AnyCPU, aucun, et faux, mais je vois encore .pdb dans le dossier $ (OutputDir).

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

Merci d'avance, Urvi

Était-ce utile?

La solution

Je ne suis pas tout à fait sûr (ne pas construire d'équipe installé), mais il est très probable que lorsque vous modifiez ces propriétés dans le poject de TFSBuild, ils ne se propagent pas à vos dossiers de projet puisque les solutions réelles / projets construit en lançant une autre tâche MSBuild, et la cible responsable Microsoft.TeamFoundation.Build.targets ne passe pas ces propriétés à la tâche.

Par exemple, ceci est la cible « CallCompile » dans le fichier ci-dessus (encore une fois, je ne suis pas sûr que ce soit ce que votre construire le scénario utilise, mais l'idée est la même):

<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>

Vous peut sortir avec l'ajout des propriétés que vous souhaitez le fichier cible, mais:

  • cela signifie que vous devez changer ce fichier chaque fois que vous mettez à niveau
  • il pourrait ne pas être le comportement souhaité pour tous vos projets
  • last but not least: si les fichiers de projet invoqués contiennent également DebugSymbols / ..., les valeurs de propriété dans votre fichier simplement remplacer ceux transmis par la tâche MSBuild, donc à la fin vous avez encore changer tous les fichiers du projet à traiter que

Une façon de achive ce que vous voulez, est d'écrire un script dans votre langue de choix qui répertorie tous les fichiers * .csproj dans un répertoire, puis modifie chaque fichier pour remplacer vrai faux. Ou encore plus vite. Faire une recherche sur * .csproj dans l'explorateur, ouvrir tous les fichiers à la fois dans un éditeur et effectuez une recherche / remplacement sur tous les fichiers ouverts

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top