TeamBuild MSB5004 - The solution file has two projects named "localhost". Comment compiler avec msbuild une solution contenant 2 sites web IIS ?
Récemment, j’ai eu besoin de compiler une solution contenant 2 sites web pointant sur IIS avec MsBuild.
La solution ressemblait à peu près à ça :
Malheureusement lorsque je lance le build, msbuild m’indique l’erreur suivante :
Solution3.sln : Solution file error MSB5004: The solution file has two projects named "localhost".
En effet, dans le solution explorer, la seule différence entre les 2 websites est le numéro de port. Malheureusement il n’est pas possible de modifier dans Visual Studio les noms de ces sites web.
J’ai donc ouvert via notepad le fichier sln, j’ai trouvé ces lignes :
Project("{GUID}") = "localhost", "http://localhost:10171", "{GUID}"
Project("{GUID}") = "localhost", "http://localhost:10172", "{GUID}"
On voit clairement que l’on a deux projets avec le même nom. J’ai alors modifié le nom des ces deux projets puis relancer mon build et tout s’est bien déroulé.
Le problème est que si l’on édite le fichier sln via Visual Studio, ces valeurs seront automatiquement écrasées par localhost. J’ai donc créé 2 fichiers sln : un pour les développeurs et une copie corrigée pour msbuild.
J’ai remonté le souci à Microsoft via connect, ils m’ont confirmé qu’il s’agit d’un bug et que cela sera corrigé dans VS2010.
Hi Cyril,
Thanks for the feedback. I confirm this is a bug. […] his bug should be fixed in the final version of VS2010.
Dan
Il existe une autre solution, plutôt que d’utiliser les numéros de port pour différencier les sites web, on peut utiliser les nom d’hotes. Au niveau de mon fichiers hosts j’ai rajouté 2 entrées vers 127.0.0.1

Avec cette configuration, la solution compile. Malheureusement, je n’ai pas pu utiliser cette astuce, mon vrai fichier .sln contient une 30aine de site web et une 20aine de personnes travaillent actuellement sur cette solution.
Pour en savoir plus, voir d’autres workaround de la part de Microsoft ou bien voter pour ce bug, c’est ici : [Connect] error MSB5004 with MsBuild when using two IIS website