Faits: A. Les sociétés A._ Sàrl, à X._ (ci-après: A._), et B._ SA, à Y._ (ci-après: B._), se sont réunies en consortium (ci-après: le Consortium) pour présenter une soumission commune dans le cadre d'un appel d'offres public lancé par la Ville de Genève. Soumis à la procédure sélective, le marché portait sur l'acquisition de licences d'utilisation d'un progiciel financier et sur les prestations nécessaires à son implémentation. Après avoir passé avec succès la procédure de présélection aux côtés de deux autres candidats, le Consortium a déposé son offre proprement dite le 24 septembre 2002, en y joignant une lettre d'accompagnement contenant les lignes suivantes: « (...) D'autre part et comme vous l'avez demandé, vous serez en liaison avec un chef de file unique, en l'occurrence B._, qui sera votre interlocuteur unique pour tout le projet et en assumera l'entière responsabilité contractuelle. De plus, il s'engage à mobiliser les ressources les plus pertinentes en provenance soit de A._ soit de B._, et ceci de manière transparente pour la Ville de Genève. (...) » Après l'ouverture des offres, le 25 septembre 2002, et l'audition des soumissionnaires, la Ville de Genève a prononcé la décision d'adjudication le 22 octobre 2002. Le choix ne s'est pas porté sur le Consortium, mais sur l'un des deux autres candidats. Le 24 octobre 2002, la Ville de Genève a communiqué au Consortium une décision l'informant que son offre n'avait pas été retenue et qu'il disposait d'un délai de dix jours, dès réception de la décision, pour recourir auprès du Tribunal administratif du canton de Genève (ci-après: le Tribunal administratif). Cette décision a été notifiée par courrier séparé, adressé à leur nom, à chacune des deux sociétés composant le Consortium. B. Le 28 octobre 2002, B._ a fait parvenir au pouvoir adjudicateur un courriel, dans lequel, «tout en respectant» la décision d'adjudication, elle exprimait le désir de «connaître plus de détails sur les points négatifs» concernant la soumission qu'elle avait déposée en commun avec A._; à cette fin, elle sollicitait la possibilité de consulter le tableau comparatif des offres et d'obtenir un rendez-vous. Estimant, pour sa part, que le marché n'avait pas été adjugé conformément aux principes et aux règles applicables en matière de marchés publics, A._ a recouru le 4 novembre 2002 contre la décision d'adjudication. Sous suite de frais et dépens, elle a conclu, à titre principal, à l'annulation de cette décision et au renvoi de la cause à la Ville de Genève pour nouvelle adjudication et, subsidiairement, à la constatation du caractère illicite de cette décision et à la condamnation de la Ville de Genève à lui payer 350'000 fr. «au moins» à titre de dommages et intérêts pour les dépenses qu'elle avait engagées pour établir la soumission. Ayant appris que la Ville de Genève avait déjà signé, le 7 novembre précédent, le contrat avec l'adjudicataire, A._ a abandonné sa conclusion principale. De son côté, la Ville de Genève a conclu à l'irrecevabilité du recours, au motif que A._ n'avait pas la qualité pour recourir au sens de l'art. 60 de la loi genevoise du 12 septembre 1985 sur la procédure administrative (ci-après: LPA/GE ou loi sur la procédure administrative), faute de procéder conjointement avec B._ avec laquelle elle s'était constituée en consortium pour déposer son offre. A cette argumentation, A._ a objecté qu'elle était en mesure d'honorer seule le marché en cas d'admission de son recours et que, de toute façon, dans la mesure où l'objet de la contestation se limitait à faire constater le caractère illicite de la procédure d'adjudication en vue d'obtenir la réparation de son dommage personnel, elle pouvait agir seule. Par arrêt du 29 avril 2003, le Tribunal administratif a déclaré irrecevable le recours dont il était saisi, motif pris de l'absence de qualité pour recourir de A._. C. A._ forme recours de droit public et demande au Tribunal fédéral d'annuler, sous suite de frais et dépens, l'arrêt précité du Tribunal administratif. Invoquant l'art. 9 Cst., elle se plaint d'arbitraire dans l'application de l'art. 60 lettres a et b LPA/GE (relatif à la qualité pour recourir) et de violation du principe de la protection de la bonne foi mis en relation avec l'art. 46 al. 1 LPA/GE (relatif au contenu des décisions administratives). Elle fait également valoir que son droit d'être entendue (29 al. 2 Cst.) a été violé, car le Tribunal administratif n'a pas tenu compte des objections qu'elle avait opposées aux arguments de la Ville de Genève tendant à faire admettre qu'elle n'avait pas la qualité pour recourir. La Ville de Genève conclut au rejet du recours avec suite de frais et dépens, tandis que le Tribunal administratif renonce à se déterminer. 