2009-10-08 1 views
2

Notre serveur de build a été en utilisant les propriétés suivantes pendant un certain tempsMake binaires de sortie de génération IDE vers le dossier unique et résoudre ref son de ce

OutputPath=c:\output; 
OutputDir=c:\output; 
OutDir=c:\output; 
ReferencePath=c:\output; 
AdditionalLibPaths=c:\output 

qui font toutes les sorties aller dans un dossier commun, et permettent également la résolution références pour ce même dossier. Cela fonctionne très bien parce que

  1. c'est une optimisation sur la construction localement et la copie des références localement
  2. je besoin de tous mes dll dans un dossier commun de toute façon que je puisse zip et bateau

Depuis cela fonctionne très bien sur la boîte de construction, je voudrais apporter la même expérience à nos développeurs. Je veux que nos constructions IDE se comportent de la même manière. En d'autres termes, je veux que les flux de travail que nos développeurs utilisent toujours (construire une solution, construire un projet) se comportent exactement comme je l'ai décrit dans la boîte de construction.

Je pourrais facilement accomplir ceci si j'ai demandé à l'équipe de créer un outil externe de VS.Net à un fichier séquentiel qui appelle juste msbuild sur le projet choisi avec les propriétés désirées. Mais idéalement, ils n'auraient pas à changer leur flux de travail.

Je veux savoir

  • si quelqu'un d'autre est en train de faire cela?
  • Quelle est la meilleure façon de le faire?
  • dois-je modifier chaque fichier csproj ou utiliser un outil externe ou d'un fichier batch

Merci

Répondre

0

Nous faisons la même chose. Modification de chaque fichier csproj Assez de plomberie mais ça marche.

Si possible, essayez de réduire le nombre d'assemblages au minimum.

Edits nécessaires pour csproj:

<ProjectReference Include="..\Core\Core.csproj"> 
     <Project>{9C81B684-40CC-472A-804D-7C0F963315F5}</Project> 
     <Name>Core</Name> 
    </ProjectReference> 

deviendrais comme référence régulière:

<Reference Include="Core, Version=1.0.0.0, Culture=neutral, 
    processorArchitecture=MSIL"> 
     <SpecificVersion>False</SpecificVersion> 
     <HintPath>..\..\Deploy\$(Configuration)\Core.dll</HintPath> 
    </Reference> 

Bien - chemin relatif au dossier de déployer doivent être définis comme des biens.

Mais je ne suis pas un gourou de la construction. Juste partager quelques infos. :)

+0

Pourriez-vous donner un exemple de ce que vous modifiez à chaque fois? Pourrais-je effectuer une recherche groupée et remplacer à l'aide de grepWin pour les projets existants, puis créer un nouveau modèle de projet? J'ai plus de 500 projets donc j'ai un grand entretien. – Ryu

+0

Oh mon dieu ... 500 projets. Alors cela pourrait ne pas être une option. L'outil Rechercher et remplacer doit être trop sophistiqué. –

1

Vous devez définir les deux méthodes OutDir et ReferencePath pour que les projets envoient leur sortie à OutDir et qu'ils résolvent les références à partir du même chemin. Vous pouvez ajouter des cibles communes avec fichier:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5"> 
    <PropertyGroup> 
      <OutDir>c:\output\</OutDir> 
      <ReferencePath>$(OutDir);$(ReferencePath)</ReferencePath> 
    </PropertyGroup> 
</Project> 

Mettre cela dans un fichier foo.targets et importer que dans chaque projet.

Questions connexes