Faits:
A. X._ SA a notamment pour but social l'exploitation de boulangeries, pâtisseries, bars à café et restaurants.
A._ SA, entreprise spécialisée dans les installations de chauffage et de climatisation, a exécuté au mois d'août 2005 des travaux d'installation dans une boulangerie que X._ SA exploite à Crissier. Elle a établi une facture au montant de 75'320 fr. le 12 décembre 2005. La maîtresse de l'ouvrage a versé un acompte de 30'000 fr. le 7 juillet 2009.
B. En septembre 2005, X._ SA avait par ailleurs entrepris le réaménagement complet des locaux d'une boulangerie à Bussigny, en vue d'y exploiter aussi un salon de thé. Parmi d'autres travaux, ce projet comportait l'installation d'un système de chauffage et de ventilation.
C._ Sàrl se consacre à l'étude, l'organisation, la planification et la réalisation d'opérations immobilières. Elle avait participé à la transformation de la boulangerie de Crissier. Par contrat du 21 septembre 2005, elle a promis à X._ SA diverses prestations relatives à l'installation de chauffage et de ventilation nécessaire à Bussigny, spécifiées comme suit: étude et adaptation de l'avant-projet existant, définition des besoins et concept technique, devis, soumissions, comparatifs et adjudications, plan définitifs et contrôle d'exécution, planification et suivi de la mise en ?uvre, gestion financière et contrôle des coûts, dossier de l'ouvrage terminé.
A._ SA a présenté une offre pour l'installation de Bussigny. Elle proposait un bloc de ventilation avec chauffage électrique à installer sur la toiture du bâtiment, un réseau de conduites, gaines et diffuseurs à installer dans les faux-plafonds, des amortisseurs de bruit, divers accessoires et périphériques et un tableau électrique. L'installation récupérerait la chaleur du four de la boulangerie. La puissance du chauffage en toiture pourrait atteindre vingt-cinq kilowatts environ. Les prestations offertes comprenaient l'établissement des plans de montage en coordination avec les autres corps de métier, l'établissement du schéma électrique, le montage du matériel, l'isolation et le doublage des gaines en toiture, la programmation du régulateur et la mise en service de l'installation. D'abord plus élevé, le prix demandé fut réduit à 70'000 fr. hors taxes.
Au nom de X._ SA, C._ Sàrl a accepté cette offre pour ce prix le 27 septembre 2005.
C. A._ SA a exécuté les travaux au cours des mois de septembre 2005 à février 2006.
Il apparut que les éléments de l'installation en toiture n'avaient pas été prévus dans le dossier d'autorisation de construire préparé par une autre des entreprises impliquées dans la transformation des locaux. L'autorité communale compétente exigea la dissimulation de ces éléments par des panneaux ignifuges. Il apparut également que la législation cantonale sur l'énergie n'autorisait pas un chauffage électrique de la puissance prévue, de sorte que l'installation dut être bridée à huit kilowatts.
La boulangerie avec salon de thé fut exploitée dès le 23 décembre 2005. Il apparut que le salon de thé était insuffisamment chauffé, les clients y gardant leurs manteaux. A._ SA apporta des radiateurs électriques à bain d'huile.
Par lettre du 22 mars 2006, X._ SA lui confirma que l'installation ne donnait pas satisfaction.
Le lendemain 23 mars, pour cette installation, A._ SA présenta une facture au montant total de 75'320 fr., TVA comprise, payable à trente jours. X._ SA avait déjà versé deux acomptes de 18'800 fr. et 34'400 francs.
D. Le 5 juillet 2006, requérant une expertise hors procès, X._ SA et le propriétaire de l'immeuble de Bussigny ont fait citer C._ Sàrl par le Juge de paix du district de Morges. L'architecte Pierre-André Juvet, désigné en qualité d'expert, a déposé un rapport puis un rapport complémentaire. Les dépens de l'expertise hors procès furent arrêtés à 18'037 fr.80 pour X._ SA et à 9'057 fr. pour C._ Sàrl.
X._ SA a fait installer dans le salon de thé, par une entreprise tierce, des radiateurs raccordés au chauffage d'un bâtiment voisin. La dépense s'est élevée à 23'000 francs.
Dès 2006, X._ SA a cessé de faire fonctionner le four de la boulangerie.
E. Le 24 septembre 2007, A._ SA a ouvert action contre X._ SA devant le Tribunal civil de l'arrondissement de Lausanne. L'action portait sur le prix encore impayé des travaux de Crissier et de Bussigny. La défenderesse devait être condamnée à payer 97'440 fr. avec intérêts au taux de 5% par an, dès le 12 janvier 2006 sur 75'320 fr. et dès le 23 juillet 2006 sur le solde. Le tribunal devait donner mainlevée définitive des oppositions de la défenderesse à deux commandements de payer qui lui avaient été notifiés.
La défenderesse a conclu au rejet de l'action et elle a appelé en cause C._ Sàrl. A titre principal, celle-ci devait être condamnée à payer 114'037 fr. à titre de dommages-intérêts, avec intérêts au taux de 5% par an dès le 14 mai 2008. A titre subsidiaire, l'appelée en cause devait être condamnée à relever la défenderesse de tout montant en capital, intérêts et dépens que cette dernière serait tenue de payer à la demanderesse.
C._ Sàrl a conclu au rejet des conclusions prises contre elle. Par demande reconventionnelle, elle a réclamé que la défenderesse fût condamnée à lui payer le prix encore impayé de ses services, soit 12'028 fr. avec intérêts dès le 1er février 2006.
Un constat d'urgence et une mission d'expertise furent attribués à l'architecte Roland Mosimann. Celui-ci déposa un rapport et un rapport complémentaire.
En cours d'instance, la demanderesse a adopté la raison sociale B._ SA.
Le tribunal s'est prononcé par jugement du 8 mars 2011.
Il a partiellement accueilli l'action principale intentée par B._ SA. Pour les travaux de Crissier, X._ SA était condamnée à payer la totalité du prix encore dû, soit 75'320 fr. avec intérêts au taux de 5% par an dès le 12 janvier 2006, sous déduction de 30'000 fr. avec intérêts dès le 8 juillet 2009. Pour les travaux de Bussigny, une moins-value arrêtée à 11'500 fr. était imputée sur le solde encore dû; X._ SA devait donc payer 22'120 fr. avec intérêts dès le 23 avril 2006, sous déduction de 11'500 fr. avec intérêts dès le 1er mars 2006. A concurrence de ces prétentions, le tribunal a donné mainlevée définitive de l'opposition dans chacune des deux poursuites.
Le tribunal a rejeté l'action connexe et récursoire intentée par X._ SA à C._ Sàrl et il a accueilli l'action reconventionnelle en paiement d'honoraires; il a ainsi condamné X._ SA à payer 12'028 fr. avec intérêts au taux de 5% par an dès le 10 septembre 2008.
F. X._ SA a appelé du jugement. Elle persistait dans ses conclusions tendant au rejet de l'action principale de B._ SA. C._ Sàrl devait être condamnée à lui payer 44'537 fr. avec intérêts dès le 14 mai 2008; elle devait de plus être condamnée à la relever de tout montant alloué, le cas échéant, à B._ SA, en capital, intérêts et dépens.
La Cour d'appel civile du Tribunal cantonal a statué le 27 mars 2012. Elle a réformé le jugement au détriment de B._ SA en ce sens que la moins-value grevant sa prétention est augmentée de 11'500 fr. à 17'300 francs. Le jugement est confirmé pour le surplus.
G. Agissant par la voie du recours en matière civile, X._ SA saisit le Tribunal fédéral de conclusions semblables à celles prises devant la Cour d'appel.
Invitées à répondre, B._ SA et C._ Sàrl concluent l'une et l'autre au rejet du recours.

Considérant en droit:
1. En règle générale, dans les affaires pécuniaires civiles, le recours ordinaire au Tribunal fédéral n'est recevable que si la valeur litigieuse s'élève à 30'000 fr. au moins (art. 74 al. 1 let. b LTF). Cette valeur est déterminée d'après les conclusions restées litigieuses devant l'autorité précédente (art. 51 al. 1 let. a LTF). Les divers chefs de conclusions formés par la même partie sont additionnés, à moins qu'ils ne s'excluent (art. 52 LTF). En règle générale, le montant d'une demande reconventionnelle et celui d'une demande principale ne sont pas additionnés (art. 52 al. 1 LTF). Par ailleurs, les conclusions soumises au Tribunal fédéral doivent être motivées (art. 42 al. 1 LTF).
Au regard de ces règles, la valeur minimale est atteinte sur tous les chefs de la contestation qui oppose la recourante à B._ SA, alors même que le solde du prix des travaux de Bussigny est inférieur à 30'000 francs.
La valeur minimale aussi est atteinte pour les dommages-intérêts que la recourante réclame encore à C._ Sàrl. La motivation du recours ne porte toutefois que sur deux chefs d'indemnisation au total de 35'037 fr.; par conséquent, en tant qu'elles excèdent ce total, les conclusions prises contre l'appelée en cause sont irrecevables.
D'après ces mêmes conclusions, la prestation d'honoraires que C._ Sàrl a obtenue par 12'028 fr. en capital semble incontestée; le cas échéant, elle n'est pas contestée de manière recevable car la motivation du recours est totalement silencieuse à son sujet.
Pour le surplus, les conditions de recevabilité du recours en matière civile sont satisfaites.
2. Le recours est ouvert pour violation du droit fédéral (art. 95 let. a LTF). Le Tribunal fédéral applique ce droit d'office, hormis les droits fondamentaux (art. 106 LTF). Il n'est pas lié par l'argumentation des parties et il apprécie librement la portée juridique des faits; il s'en tient cependant, d'ordinaire, aux questions juridiques que la partie recourante soulève dans la motivation du recours (art. 42 al. 2 LTF; <ref-ruling> consid. 1.4 p. 400; <ref-ruling> consid. 1.4.1 p. 254), et il ne se prononce sur la violation de droits fondamentaux que s'il se trouve saisi d'un grief invoqué et motivé de façon détaillée (art. 106 al. 2 LTF; <ref-ruling> consid. 3.2 p. 88; <ref-ruling> consid. 2.2 p. 246; <ref-ruling> consid. 1.4.2).
Le Tribunal fédéral doit conduire son raisonnement juridique sur la base des faits constatés dans la décision attaquée (art. 105 al. 1 LTF); les allégations de fait et les moyens de preuve nouveaux sont en principe irrecevables (art. 99 al. 1 LTF). Le tribunal peut compléter ou rectifier même d'office les constatations de fait qui se révèlent manifestement inexactes, c'est-à-dire arbitraires aux termes de l'art. 9 Cst. (<ref-ruling> consid. 4.1.2 p. 62; <ref-ruling> consid. 1.1.2 p. 252), ou établies en violation du droit (art. 105 al. 2 LTF). La partie recourante est autorisée à attaquer des constatations de fait ainsi irrégulières si la correction du vice est susceptible d'influer sur le sort de la cause (art. 97 al. 1 LTF).
3. Le code de procédure civile unifié (CPC) est entré en vigueur le 1er janvier 2011 alors que la cause était pendante devant le Tribunal civil. Par l'effet des art. 404 al. 1 et 405 al. 1 CPC, la procédure de première instance est demeurée soumise au droit cantonal antérieur tandis que l'appel était régi par le code unifié.
4. En appel, X._ SA a demandé une nouvelle audition de quatre témoins entendus par le Tribunal civil, dont les dépositions n'avaient pas été consignées au procès-verbal ni reproduites, même partiellement, dans le jugement. La Cour d'appel n'a pas donné suite à cette requête. La recourante tient ce refus pour incompatible avec le droit d'être entendu garanti par l'art. 29 al. 2 Cst., compte tenu que l'appel était recevable pour constatation inexacte des faits (art. 310 let. b CPC), mais que, à défaut de compte rendu des témoignages, elle se trouvait dépourvue de toute possibilité de discuter l'appréciation de ces preuves par les premiers juges.
L'art. 316 al. 3 CPC habilite l'autorité d'appel à administrer des preuves. L'autorité jouit à ce sujet d'un large pouvoir d'appréciation; elle peut notamment répéter des mesures probatoires déjà accomplies par le tribunal du premier degré ou accueillir des offres de preuve que ce tribunal a rejetées (Peter Reetz et Sarah Hilber, in Kommentar zur Schweizerischen Zivilprozessordnung, Thomas Sutter-Somm, éd., 2010, n° 47 ad art. 316 CPC). Au demeurant, selon l'art. 150 al. 1 CPC, la preuve n'a pour objet que des faits pertinents et contestés. Les faits pertinents sont ceux propres à influencer la solution juridique de la contestation (Franz Hasenböhler, ibid., n° 12 ad art. 150 CPC).
Le droit d'être entendu garanti par l'art. 29 al. 2 Cst. inclut le droit à l'administration des preuves valablement offertes, à moins que le fait à prouver ne soit dépourvu de pertinence ou que la preuve apparaisse manifestement inapte à la révélation de la vérité. Par ailleurs, le juge est autorisé à effectuer une appréciation anticipée des preuves déjà disponibles et, s'il peut admettre de façon exempte d'arbitraire qu'une preuve supplémentaire offerte par une partie serait impropre à ébranler sa conviction, refuser d'administrer cette preuve (<ref-ruling> consid. 3 p. 157; <ref-ruling> consid. 2.1 p. 428; <ref-ruling> consid. 7b p. 430).
Selon l'argumentation développée par la recourante, les témoins devaient notamment attester que « les parties avaient convenu avant tout d'une installation de chauffage » et que « le défaut affectant la partie relative au chauffage a causé à la recourante un dommage considérable »; ils devaient aussi attester du « rôle joué par C._ Sàrl ».
Ces allégations sont inconsistantes. En ce qui concerne spécialement l'ouvrage à réaliser par B._ SA, la décision attaquée fait comprendre sans équivoque que les locaux de Bussigny devaient être chauffés au moyen de la ventilation, à l'exclusion de tout autre chauffage, et que l'air pulsé dans l'installation devait être chauffé par récupération de la chaleur du four, ou, en tant que cette chaleur serait insuffisante, par des corps de chauffe électriques. La recourante omet entièrement d'indiquer les précisions importantes que les témoins auraient pu apporter, censément, sur les fonctions ainsi attendues de l'installation. Il est par ailleurs inutile que des témoins soient entendus pour faire état d'un « dommage considérable »; la partie qui prétend à indemnité doit plutôt apporter la preuve concluante d'un dommage concret. En vérité, la recourante ne critique guère les constatations de fait de la Cour d'appel et elle n'explique donc pas en quoi cette autorité aurait dû parvenir à des constatations différentes par suite de l'audition des quatre témoins. Elle échoue donc à démontrer la pertinence de la preuve vainement offerte devant cette autorité; partant, elle échoue à mettre en évidence une violation de son droit d'être entendue.
5. Il est constant que X._ SA s'est liée à B._ SA par des contrats d'entreprise, tant pour les travaux de Crissier que pour ceux de Bussigny, et qu'elle s'est obligée à payer le prix des ouvrages. Elle soutient cependant que l'ouvrage de Bussigny est si gravement défectueux qu'elle se trouve en droit de ne rien payer pour celui-ci. Elle refuse ainsi le solde de 22'120 fr. encore impayé et elle prétend récupérer ses deux acomptes par compensation avec ce qu'elle doit encore pour les travaux de Crissier.
6. L'art. 368 al. 1 CO prévoit que si l'ouvrage est défectueux au point que le maître ne peut pas en faire usage, ou ne peut pas être équitablement contraint de l'accepter, il a le droit de le refuser. Le contrat est alors résolu et le maître a le droit d'exiger la restitution de ce qu'il a déjà payé, avec intérêts au taux légal selon l'art. 73 al. 1 CO, dès le paiement (François Chaix, Commentaire romand, nos 23 à 25 ad art. 368 CO; Peter Gauch, Der Werkvertrag, 2011, n° 1535 p. 602). En cas de défaut moins important, l'art. 368 al. 2 CO autorise le maître à exiger la réparation de l'ouvrage aux frais de l'entrepreneur, si la réparation est possible sans dépense excessive, ou à réduire le prix en proportion de la moins-value.
L'art. 369 CO prévoit que le maître ne peut pas invoquer les droits résultant des défauts de l'ouvrage lorsque l'exécution défectueuse lui est personnellement imputable, soit à raison des ordres qu'il a donnés contrairement aux avis formels de l'entrepreneur, soit pour toute autre cause.
Les autorités précédentes ont jugé que B._ SA aurait dû connaître et prendre en considération la législation cantonale sur l'énergie, de sorte que la diminution de puissance que cette législation a imposée pour les corps de chauffe, de vingt-cinq à huit kilowatts, est un défaut imputable à cette entreprise. Elles ont jugé que ce défaut n'est pas suffisamment important pour justifier un refus de l'ouvrage.
En dépit de l'opinion différente de X._ SA, leur appréciation mérite l'adhésion du Tribunal fédéral. Il a été possible à la maîtresse de l'ouvrage de remédier à l'insuffisance du chauffage avec l'adjonction d'un autre équipement, consistant dans des radiateurs raccordés au chauffage d'un bâtiment voisin. Il n'est pas constaté que le système mixte ainsi mis en oeuvre présente un quelconque inconvénient par rapport à la solution initialement prévue; un inconvénient rédhibitoire est donc moins encore établi. Nonobstant un autre défaut qui a aussi été reconnu et réparé, les fonctions que l'installation devait assurer, telles la ventilation, sont effectivement et entièrement disponibles. L'art. 368 al. 1 CO n'autorise donc pas la maîtresse de l'ouvrage à résoudre le contrat concerné.
7. En application des art. 368 al. 2 et 369 CO, le Tribunal civil a admis une moins-value consécutive à l'insuffisance du chauffage; il en a estimé la valeur au coût de l'installation des radiateurs qui n'étaient pas prévus dans le projet initial. Le tribunal a considéré que cette moins-value était imputable par moitié à l'entreprise et à la maîtresse de l'ouvrage, parce que celle-là n'était pas parvenue à mettre en service des corps de chauffe suffisamment puissants et parce que celle-ci avait renoncé à l'utilisation du four de la boulangerie, lequel était pourtant censé, dans la conception de l'installation, apporter l'essentiel de la chaleur nécessaire. Le tribunal a donc diminué le prix de 11'500 fr., soit la moitié de la dépense faite pour l'installation des radiateurs.
La Cour d'appel applique les mêmes dispositions d'une manière différente. Elle retient une moins-value de 15'000 fr. consécutive au défaut des corps de chauffe, imputable en entier à B._ SA. A cette partie, la Cour impute encore une autre moins-value de 2'000 fr. et des dommages-intérêts au montant de 300 fr., de sorte qu'en définitive, elle diminue le prix de 17'300 francs.
Devant le Tribunal fédéral, X._ SA fait valoir qu'elle seule a appelé du jugement de première instance et que la décision d'appel ne peut pas lui être moins favorable que ce jugement; de cela, elle déduit que la Cour d'appel ne pouvait pas réduire à 15'000 fr. une moins-value d'abord arrêtée à 23'000 fr. par les premiers juges. Quoiqu'elle ne mentionne pas cette disposition, la recourante invoque de façon suffisamment explicite la maxime de disposition consacrée par l'art. 58 al. 1 CPC.
La moins-value de 23'000 fr. retenue par le Tribunal civil se rapportait à l'insuffisance du chauffage considérée globalement, toutes causes confondues; celle de 15'000 fr. retenue en appel ne se rapporte qu'à une seule cause, soit au manque de puissance des corps de chauffe installés par B._ SA. A raison de ce défaut, la décision d'appel réduit le prix de 15'000 fr. au lieu de 11'500 fr. seulement; cette décision est donc avantageuse à la recourante et il n'y a pas lieu de s'attarder davantage au grief tiré d'une reformatio in peius. Pour le surplus, la recourante ne prétend pas que le prix doive être réduit de plus de 17'300 francs.
8. X._ SA soutient qu'elle s'est liée à C._ Sàrl par un contrat de mandat et que la mission confiée à cette société a été mal exécutée; elle prétend donc à des dommages-intérêts sur la base de l'art. 398 CO.
En instance fédérale, seuls deux chefs d'indemnisation sont encore litigieux: 13'000 fr. au titre des frais supportés pour dissimuler, selon l'injonction de l'autorité communale, les éléments de l'installation implantés sur la toiture du bâtiment, et 18'037 fr.80 au titre des dépens de l'expertise hors procès.
9. X._ SA reproche à C._ Sàrl de n'avoir pas prévu les travaux de dissimulation et, partant, de n'avoir pas prévu les frais y relatifs dans le devis.
Les règles du mandat sont applicables à l'activité de l'architecte ou de tout autre praticien consistant à établir, à l'intention du maître de l'ouvrage, le devis des travaux dont l'exécution sera confiée à autrui (<ref-ruling> consid. 6.2.3 et 6.2.4 p. 365). Ce mandataire est donc responsable selon l'art. 398 CO du dommage causé par une sous-estimation des coûts.
Le dommage consiste dans la différence entre la dépense effectivement supportée par le mandant et celle, supposée inférieure, que celui-ci aurait vraisemblablement acceptée si le mandataire l'avait renseigné exactement et en temps utile. Le dommage résulte de ce que le mandant aurait pris des décisions différentes s'il avait reçu une estimation exacte, par exemple en s'assurant un financement plus avantageux, en passant commande d'un ouvrage plus économique ou en renonçant totalement à son projet. La sous-estimation ne cause aucun dommage s'il apparaît que le mandant aurait de toute manière, même s'il avait disposé d'une estimation exacte, fait exécuter l'ouvrage sans modification et en en assumant volontairement les coûts réels. En principe, il incombe au mandant de prouver qu'il aurait pris des décisions différentes si son cocontractant lui avait fourni une estimation exacte (arrêt 4C.424/2004 du 15 mars 2005, consid. 5.1.1).
X._ SA n'a pas allégué, semble-t-il, qu'elle eût fait étudier et réaliser une installation de chauffage et de ventilation différente, à moindres frais, dans l'hypothèse où elle eût connu la nécessité de dissimuler les éléments en toiture et que le devis établi par C._ Sàrl l'eût avertie des coûts correspondants. La recourante ne tente en tout cas pas de démontrer que les constatations cantonales soient à ce sujet incomplètes. Faute d'avoir établi un dommage pertinent, elle ne peut donc prétendre à aucune réparation.
La Cour d'appel refuse les dommages-intérêts au motif que le coût spécifique des travaux de dissimulation en toiture n'est pas documenté autrement que par une estimation antérieure à leur exécution, dans l'expertise hors procès, alors que la maîtresse de l'ouvrage aurait pu et dû prouver précisément sa dépense effective. A première vue, en dépit de l'opinion contraire de cette partie, l'autorité précédente a ainsi appliqué correctement l'art. 42 CO relatif à la preuve ou à l'estimation d'un dommage. Il n'est cependant pas nécessaire de discuter ce point puisque ce coût spécifique n'est de toute manière pas un dommage sujet à réparation.
10. La Cour d'appel juge que C._ Sàrl ne doit pas être condamnée à rembourser les dépens de l'expertise hors procès car aucune des prétentions élevées contre elle n'a été accueillie. X._ SA ne soutient pas que ce raisonnement soit intrinsèquement erroné; elle se borne à affirmer qu'il « tombe à faux » car elle a prétendument droit à des dommages-intérêts correspondant au coût des travaux de dissimulation. La prémisse dudit raisonnement étant confirmée, sa conclusion doit l'être aussi.
11. Le recours se révèle en tous points privé de fondement, dans la mesure où les conclusions présentées sont recevables. A titre de partie qui succombe, son auteur doit acquitter l'émolument à percevoir par le Tribunal fédéral et les dépens auxquels ses adverses parties peuvent prétendre.

Par ces motifs, le Tribunal fédéral prononce:
1. Le recours est rejeté, dans la mesure où il est recevable.
2. La recourante acquittera un émolument judiciaire de 4'500 francs.
3. La recourante versera une indemnité de 5'500 fr. à l'intimée B._ SA, à titre de dépens.
4. La recourante versera une indemnité de 5'500 fr. à l'intimée C._ Sàrl, à titre de dépens.
5. Le présent arrêt est communiqué aux parties et au Tribunal cantonal du canton de Vaud.
Lausanne, le 19 juillet 2012
Au nom de la Ire Cour de droit civil
du Tribunal fédéral suisse
La présidente: Klett
Le greffier: Thélin