Faits :
A.
A.a. Par contrat d'entreprise signé les 25 août et 1er septembre 2003, B._ SA s'est engagée en qualité d'entrepreneur à effectuer des travaux de maçonnerie et de béton armé sur l'immeuble A du complexe immobilier «...» à L1._ (VD), pour le compte du maître d'ouvrage A._ SA. Par la suite, les parties ont convenu que l'entrepreneur effectuerait les mêmes travaux pour les immeubles B, C et D du complexe précité.
A.b. Le 15 novembre 2005, l'entrepreneur a adressé au maître d'ouvrage une facture finale dont le solde restant à payer, après application d'un escompte de 2% et déduction des acomptes versés (995'000 fr.), s'élevait à 156'927 fr. 25.
N'ayant pas obtenu le paiement requis, l'entrepreneur a fixé un nouveau délai au 10 février 2006 en précisant qu'à défaut de paiement, le montant déduit à titre d'escompte redeviendrait exigible.
Le 24 février 2006, l'entrepreneur a fait notifier au maître un commandement de payer portant sur la somme de 171'381 fr. 40.
B.
B.a. Le 7 avril 2006, B._ SA (ci-après: la demanderesse) a saisi le Tribunal civil de l'arrondissement de La Gruyère (FR) d'une demande dirigée contre A._ SA (ci-après: la défenderesse), concluant au paiement de 180'991 fr. 30 ainsi qu'à la mainlevée définitive de l'opposition formée dans la poursuite en cours. En substance, la demanderesse exigeait le paiement du solde de sa facture finale (156'927 fr. 25), auquel s'ajoutaient 24'064 fr. 05 en raison de la suppression de l'escompte de 2%.
B.b. Par réponse du 21 septembre 2006, la défenderesse a déclaré passer expédient pour un montant de 100'000 fr. et a conclu au rejet de toute autre conclusion, subsidiairement au paiement de 2'032 fr. en raison de la suppression de l'escompte. Elle a cependant requis d'être libérée du paiement de 100'000 fr. (subsidiairement 102'032 fr.) dès lors qu'elle opposait en compensation trois créances d'un montant total de 403'085 fr.
En substance, la défenderesse a contesté le solde de la facture finale en faisant valoir que des défauts étaient apparus en cours de construction sur le chantier de L1._ et que les travaux en régie, à hauteur de 55'315 fr., n'étaient pas dus. Elle a également critiqué la suppression de l'escompte, qui augmentait la facture de 24'064 fr. 05. Par gain de paix, elle a néanmoins reconnu devoir 100'000 fr.
Cela étant, la défenderesse a opposé en compensation une première créance de 121'343 fr., qui résulterait du fait que la demanderesse aurait omis de lui remettre une garantie bancaire en lien avec le chantier de L1._. La deuxième créance invoquée s'élèverait à 161'741 fr. 65 et se rapporterait à des honoraires d'architecte auxquels la défenderesse aurait droit pour la réalisation d'un immeuble sis au chemin de L2._. Enfin, la troisième créance de 120'000 fr., cédée à la défenderesse en 2006 par X._, père de son directeur, découlerait d'une convention du 19 juin 2001 conclue dans le cadre de la réalisation d'un immeuble sis à la rue L3._.
B.c. Après le dépôt d'une réplique puis d'une duplique le 5 février 2007, les parties ont été entendues à l'audience du 14 mai 2007. A cette occasion, la défenderesse a réservé la production d'un dossier concernant un défaut nouvellement constaté sur le chantier de L1._ et a requis une expertise; elle a également sollicité la production de pièces en mains de tiers et des expertises en lien avec les constructions au chemin de L2._ et à la rue L3._. A l'issue de la séance, les parties ont été invitées à formuler leurs réquisitions de preuves dans un certain délai.
Dans le délai imparti, soit le 10 octobre 2007, la défenderesse a déposé ses réquisitions et a produit un bordereau de pièces. La demanderesse a demandé que ledit bordereau soit écarté du dossier en application des art. 130 et 131 du Code de procédure civile fribourgeois (CPC/FR). Le Tribunal civil a fait droit à cette requête le 17 novembre 2008 en décidant d'écarter du dossier les pièces 10 à 22 composant le bordereau litigieux, au motif que leur production était tardive.
Une expertise judiciaire a été mise en oeuvre. L'expert a déposé son rapport le 24 juillet 2014.
Par courrier du 25 juillet 2014, le Président du Tribunal civil a invité les parties à indiquer quelles preuves elles souhaitaient encore voir administrées. La demanderesse a formulé diverses réquisitions que la défenderesse a faites siennes, tout en indiquant qu'elle avait une question complémentaire pour l'expert ayant trait au calcul des honoraires. L'expert y a répondu le 12 avril 2015.
A l'audience du 10 juin 2015, la demanderesse a relevé que l'expertise judiciaire contenait dans son annexe F le bordereau de pièces produit par la défenderesse le 10 octobre 2007, dont le retranchement du dossier avait été ordonné par décision du 17 novembre 2008. La demanderesse requérait dès lors qu'il ne soit pas tenu compte de certaines réponses et appréciations de l'expertise dans la mesure où elles se fondaient sur des pièces du bordereau litigieux.
La défenderesse a objecté que l'expertise avait pour but d'établir les faits de la cause et que pour ce faire, l'expert pouvait se fonder sur toute pièce utile. Pour le surplus, il s'agissait d'une question d'appréciation des preuves. Elle a par ailleurs déclaré maintenir les réquisitions auxquelles il n'avait pas encore été fait droit. A la suite de ces déclarations, le Tribunal civil a prononcé la clôture de la procédure probatoire et les parties ont plaidé.
B.d. Par décision du 10 juin 2015, le Tribunal civil de La Gruyère a condamné la défenderesse à payer 169'002 fr. 25 plus intérêts à la demanderesse et a prononcé la mainlevée définitive de l'opposition à concurrence du montant précité.
En substance, le Tribunal a jugé que le solde de la facture finale, par 156'927 fr. 25, était dû, y compris pour les travaux exécutés en régie (55'315 fr.). Les prétendus défauts invoqués par la défenderesse l'avaient été tardivement, au début de l'année 2007. Comme aucun paiement n'avait été fait dans les trente jours, le montant déduit à titre d'escompte (2%) était redevenu exigible; 12'075 fr. étaient dus à ce titre. La créance de la demanderesse s'élevait ainsi à 169'002 fr. 25 (156'927 fr. 25 + 12'075 fr.).
Concernant la première créance opposée en compensation (121'343 fr.), qui découlerait du fait que la demanderesse aurait omis de remettre une garantie bancaire, le Tribunal a constaté que cette prétention était devenue sans objet dès lors que les immeubles avaient été livrés en 2004 et 2005. Quant à la créance de 161'741 fr. 65 fondée sur de prétendus honoraires d'architecte pour le chantier de L2._, elle était inexistante. En effet, les parties avaient constitué une société simple à durée déterminée, dont le but était de réaliser un immeuble au chemin de L2._. A défaut de disposition contractuelle spéciale, les parties ne disposaient pas d'un droit de sortie, mais tout au plus du droit de requérir la dissolution de la société aux conditions de l'art. 545 al. 1 ch. 7 et al. 2 CO. La défenderesse n'ayant pas saisi la justice conformément à cette disposition, elle avait quitté sans droit la société et demandait à tort le remboursement de son apport.
Enfin, la prétendue créance de 120'000 fr. cédée par X._ était inexistante. Sur la base d'une convention conclue le 19 juin 2001, la demanderesse devait certes verser 2'058 fr. 95 au prénommé, mais elle pouvait opposer en compensation un acompte de 40'000 fr. qu'elle lui avait versé à tort.
B.e. Statuant par arrêt du 13 mars 2017, le Tribunal cantonal fribourgeois a rejeté l'appel formé par la défenderesse, en opérant une substitution de motifs sur certains points.
C.
La défenderesse a saisi le Tribunal fédéral d'un recours en matière civile et d'un recours constitutionnel subsidiaire, à l'issue desquels elle conclut principalement à l'annulation de l'arrêt du 13 mars 2017 et au renvoi de la cause à l'autorité précédente, subsidiairement à la réforme de cette décision, en ce sens qu'il soit pris acte de son passé-expédient pour le montant de 100'000 fr., la compensation invoquée étant admise contre toute créance de la demanderesse à concurrence de 128'000 fr. La défenderesse a en outre sollicité l'effet suspensif.
La demanderesse a conclu au rejet du recours dans la mesure où il est recevable.
L'autorité précédente n'a formulé aucune observation.
Par ordonnance du 11 juillet 2017, la Présidente de la cour de céans a rejeté la demande d'effet suspensif.
Considérant en droit :
1.
1.1. La défenderesse, qui a pour l'essentiel succombé dans ses conclusions libératoires (art. 76 al. 1 LTF), a recouru en temps utile (art. 46 al. 1 let. a et art. 100 al. 1 LTF) contre un arrêt final (art. 90 LTF) rendu sur recours par le tribunal supérieur du canton (art. 75 LTF), dans une contestation civile pécuniaire dont la valeur litigieuse excède 30'000 fr. (art. 72 al. 1 et art. 74 al. 1 let. b LTF). Il s'ensuit que la voie du recours en matière civile est ouverte, ce qui exclut celle du recours constitutionnel subsidiaire (cf. art. 113 LTF).
1.2.
1.2.1. Le recours en matière civile peut être formé pour violation du droit fédéral (art. 95 let. a LTF), notion qui inclut le droit constitutionnel (ATF 134 III 379 consid. 1.2 p. 382). Il ne peut ainsi pas être interjeté pour violation du droit cantonal en tant que tel; en revanche, le justiciable peut plaider que la mauvaise application du droit cantonal constitue une violation du droit fédéral, en particulier qu'elle est arbitraire au sens de l'art. 9 Cst. ou contraire à d'autres droits constitutionnels (ATF 134 III 379 consid. 1.2; 133 III 462 consid. 2.3).
1.2.2. La défenderesse s'est apparemment méprise sur les griefs susceptibles d'être formulés dans un tel recours. Dans un seul et même mémoire (cf. art. 119 al. 1 LTF), elle a interjeté un recours en matière civile et un recours constitutionnel subsidiaire. Dans le premier, elle dénonce une violation de l'art. 8 CC, de l'art. 157 CPC et des art. 16, 374 et 548 CO. Dans le second, elle se plaint d'une violation du droit cantonal de procédure (art. 130 CPC/FR) en lien avec une violation de l'art. 8 CC et des art. 9 et 29 Cst. Ce type de grief étant également recevable dans un recours en matière civile (cf. consid. 1.2.1 supra), la voie du recours constitutionnel subsidiaire est fermée.
Selon la jurisprudence, l'intitulé erroné d'un recours ne nuit pas à son auteur, pour autant que les conditions de recevabilité du recours qui aurait dû être interjeté soient réunies. Encore faut-il pouvoir convertir le recours dans son ensemble; une conversion est exclue si certains griefs relèvent de la voie de droit choisie alors que d'autres auraient dû être soulevés dans un autre recours (ATF 134 III 379 consid. 1.2 p. 382 et les arrêts cités).
En l'occurrence, les griefs soulevés par la défenderesse dans son recours constitutionnel subsidiaire peuvent tous être traités dans le cadre du recours en matière civile, de sorte qu'il convient d'admettre une conversion.
2.
2.1. Le Tribunal fédéral applique d'office le droit (art. 106 al. 1 LTF) à l'état de fait constaté dans l'arrêt cantonal. Cela n'implique pas qu'il examine toutes les questions juridiques qui pourraient se poser, à l'instar d'un juge de première instance. Eu égard à l'obligation de motiver imposée par l'art. 42 al. 2 LTF, l'autorité de céans ne traite que les questions qui sont soulevées devant elle par les parties, à moins que la violation du droit soit manifeste (ATF 140 III 115 consid. 2 p. 116; 140 III 86 consid. 2).
2.2. Le Tribunal fédéral statue sur la base des faits établis par l'autorité précédente (art. 105 al. 1 LTF). Il ne peut rectifier ou compléter les constatations de l'autorité précédente que si elles sont manifestement inexactes ou découlent d'une violation du droit au sens de l'art. 95 LTF (art. 105 al. 2 LTF). «Manifestement inexactes» signifie ici «arbitraires» (ATF 140 III 115 consid. 2 p. 117; 135 III 397 consid. 1.5). Encore faut-il que la correction du vice soit susceptible d'influer sur le sort de la cause (art. 97 al. 1 LTF).
La critique de l'état de fait retenu est soumise au principe strict de l'invocation énoncé par l'art. 106 al. 2 LTF (ATF 140 III 264 consid. 2.3 p. 266 et les références). La partie qui entend attaquer les faits constatés par l'autorité précédente doit expliquer clairement et de manière circonstanciée en quoi ces conditions seraient réalisées (ATF 140 III 16 consid. 1.3.1 p. 18 et les références).
3.
3.1. Dans un grief qu'il convient de traiter en premier lieu, la défenderesse se plaint d'une violation de l'art. 130 CPC/FR en lien avec une violation de l'art. 8 CC et des art. 9 et 29 Cst.
3.2.
3.2.1. Le Code de procédure civile fribourgeois demeurait applicable à la procédure de première instance dès lors que celle-ci avait été ouverte avant l'entrée en vigueur du Code fédéral de procédure civile (cf. art. 404 al. 1 CPC).
L'art. 130 CPC/FR, intitulé « Production des moyens d'attaque et de défense», énonçait en substance que les parties articulent en une fois, sous peine de déchéance, tous leurs moyens d'attaque ou de défense, sous réserve de certaines dispositions (al. 1). Les allégations de fait et les moyens de preuve peuvent encore être complétés jusqu'au début de l'administration des preuves. Ils ne peuvent l'être subséquemment que si la production n'en était pas possible auparavant, si le retard est excusable ou si des faits nouveaux ressortent des preuves administrées d'office par le juge (al. 2).
3.2.2. Dans un exposé liminaire résumé ci-dessous, la cour cantonale a rappelé les principes de la procédure fribourgeoise gouvernant la production de moyens de preuve.
Selon la maxime des débats, il incombait aux parties d'alléguer et de prouver les faits sur lesquels elles appuyaient leurs positions. Le tribunal ne pouvait dès lors fonder son jugement que sur des faits allégués par les parties, les faits non contestés n'ayant pas à être prouvés (cf. art. 4 al. 2 CPC/FR).
Les parties devaient indiquer leurs moyens de preuve à l'appui des faits qu'elles alléguaient (art. 5 al. 1 CPC/FR). L'offre de preuve devait être faite dans les formes prescrites et à temps. Selon le principe de simultanéité, le demandeur et le défendeur devaient invoquer tous leurs moyens, respectivement, dans la demande et dans la réponse (art. 130 al. 1 CPC/FR). S'ils avaient droit à un second échange d'écritures, ils pouvaient encore les compléter dans la réplique et dans la duplique. Il en résultait, en particulier, que le demandeur devait indiquer tous ses moyens de preuve dans sa demande alors même qu'il ne savait pas encore si les faits allégués seraient contestés et s'ils devraient, par conséquent, être prouvés. Toutefois, la plupart des lois permettaient encore aux parties de corriger et de compléter leurs moyens jusqu'au début de l'administration des preuves, c'est-à-dire jusqu'à la fin de l'instruction préparatoire (art. 130 al. 2 et art. 172 al. 2 CPC/FR). Une interprétation raisonnable de la disposition permettant aux parties de faire valoir après le début de l'instruction les moyens de preuve dont elles ne disposaient pas auparavant impliquait de les astreindre à introduire de tels moyens dès qu'elles en avaient la possibilité et au moins dans l'instance en cours, pour autant que la clôture des débats n'ait pas encore été prononcée.
Passé cet ultime moment, les moyens nouveaux ne pouvaient plus être invoqués, sauf si leur production n'était pas possible auparavant, par exemple parce qu'ils n'étaient pas connus de la partie, respectivement sauf si leur présentation tardive était excusable ou si les faits ressortaient des preuves administrées (art. 130 al. 2 CPC/FR). La partie qui entendait alléguer des faits nouveaux ou preuves nouvelles devait toutefois agir immédiatement, c'est-à-dire dès la découverte du fait ou moyen de preuve nouveau, respectivement dès que l'empêchement excusable avait cessé. Il s'agissait en effet d'éviter que le justiciable se prévale d'éléments nouveaux quand bon lui semble et retarde abusivement l'issue du procès.
Les allégués de fait et les offres de preuves invoqués tardivement étaient périmés. Le juge ne pouvait pas les prendre en considération. S'ils étaient déterminants pour le succès de l'action, celle-ci devait être rejetée.
3.2.3. Passant ensuite à l'application des principes rappelés ci-dessus au cas concret, la cour cantonale a fait les considérations suivantes:
Le Président du Tribunal civil avait ordonné un double échange d'écritures, puis rendu une ordonnance préparatoire dans laquelle il constatait l'achèvement de cet échange et précisait que les preuves annoncées dans les écritures seraient administrées, respectivement que l'audience à laquelle les parties étaient assignées serait consacrée à l'interpellation des parties, voire à la clôture de la procédure et aux plaidoiries. Au début de la séance du 14 mai 2007, les parties avaient eu la possibilité de formuler des questions préliminaires et la défenderesse avait complété ses moyens de preuve. S'agissant du chantier de L1._, elle s'était réservé le droit de produire le dossier relatif à un défaut nouvellement constaté concernant des infiltrations d'eau et avait requis une expertise à ce sujet. Concernant le projet L2._, elle avait requis la production par l'autorité compétente du dossier de mise à l'enquête et de permis de construire ainsi qu'une expertise. Enfin, en lien avec le dossier L3._, elle avait requis la production, par la partie adverse, des bons de gravière nécessaires à l'établissement de la facture ainsi qu'une expertise.
Dans le délai qui lui avait été imparti, soit le 10 octobre 2007, la défenderesse avait formé des réquisitions et produit un bordereau de pièces, dont une expertise privée de E._ du 9 octobre 2007 concernant des défauts dans la construction des immeubles de L1._, ainsi que des pièces en lien avec la créance compensante relative au projet L2._.
Comme l'avait constaté le Tribunal civil, la production de l'ensemble des pièces composant le bordereau du 10 octobre 2007 était possible au plus tard au début de l'administration des preuves, soit au début de la première audience tenue le 14 mai 2007. Les parties avaient bénéficié d'un double échange d'écritures et auraient pu compléter leurs offres de preuves à ce moment-là, ou au plus tard au début de l'audience du 14 mai 2007. Le fait de réserver la production de pièces n'équivalait pas à la production effective de celles-ci, sauf à repousser indéfiniment la production de pièces et à outrepasser le cadre fixé par l'art. 130 CPC/FR.
Certes, si des faits ressortaient des preuves administrées, les parties pouvaient invoquer des moyens nouveaux - en relation avec ceux-ci uniquement - jusqu'à la clôture des débats. Ainsi, lorsque l'expertise judiciaire avait été transmise aux parties le 25 juillet 2014, le Président du Tribunal civil avait donné la possibilité aux parties d'indiquer quelles preuves elles souhaitaient encore voir administrées. Par courrier du 4 décembre 2014, la demanderesse avait requis la réaudition des parties et la production des dossiers de mises à l'enquête avec plans et permis des immeubles sis au chemin de L2._. Le 16 mars 2015, la défenderesse avait fait siens les moyens de preuve invoqués par la demanderesse sans en exiger d'autres, tout en signalant avoir une question à poser à l'expert. Le Président du Tribunal civil avait donné suite aux demandes des parties et avait notamment invité l'autorité concernée à produire des dossiers. Par conséquent, la défenderesse avait aussi eu la faculté de renouveler ses demandes de preuves et d'exiger que soient reversées au dossier les pièces qui en avaient été retirées par décision du 17 novembre 2008. L'absence d'une telle requête à ce moment-là équivalait à une renonciation qu'elle ne pouvait ensuite plus contester ou faire modifier, et la déclaration faite à l'issue de la séance du 10 juin 2015 selon laquelle la défenderesse entendait maintenir «les réquisitions auxquelles il n'[avait] pas encore été fait droit» était tardive.
Aussi la cour cantonale concluait-elle que les pièces retirées du dossier avaient effectivement été produites tardivement, la défenderesse n'ayant pas fait usage de la faculté de requérir qu'elles soient reversées au dossier. Vu que ces pièces n'avaient pas été admises dans le dossier, elles ne pouvaient être prises en compte dans le cadre de l'expertise.
3.3. La défenderesse ne conteste pas l'exposé des principes applicables à l'invocation des moyens de preuve en procédure civile fribourgeoise (cf. consid. 3.2.2 supra). En revanche, elle reproche à la cour cantonale d'en avoir fait dans le cas d'espèce (cf. consid. 3.2.3 supra) une application arbitraire (art. 9 Cst.) et contraire au droit d'être entendu garanti par l'art. 29 al. 2 Cst. ainsi qu'au droit à la preuve découlant de l'art. 8 CC.
3.3.1. Tout d'abord, la défenderesse rappelle que selon l'art. 130 al. 2 CPC/FR, «les allégations de fait et les moyens de preuve peuvent encore être complétés jusqu'au début de l'administration des preuves»; du moment que le procès-verbal de la séance du 14 mai 2007 ne fait pas mention de l'ouverture de la procédure probatoire, il serait arbitraire de considérer que l'on se trouvait lors de cette séance au «début de l'administration des preuves».
En réalité, l'omission de mentionner formellement au procès-verbal l'ouverture de la procédure probatoire n'exclut pas que l'administration des preuves ait commencé, la cour cantonale ayant d'ailleurs relevé que la décision sur l'administration des preuves était la plupart du temps implicite. La défenderesse échoue ainsi à démontrer en quoi la séance du 14 mai 2007 n'aurait pas marqué, avec l'ouverture des débats consécutive à la clôture de l'échange d'écritures, le début de la procédure probatoire, d'autant plus qu'elle n'indique pas quand, selon elle, l'administration des preuves aurait alors commencé.
3.3.2. La défenderesse taxe ensuite d'arbitraire l'analyse selon laquelle le fait de réserver la production ultérieure de titres n'équivaut pas à la production effective de titres.
Ce faisant, elle méconnaît que l'art. 130 al. 2 CPC/FR, en énonçant que «les allégations de fait et les moyens de preuve peuvent encore être complétés jusqu'au début de l'administration des preuves [et] ne peuvent l'être subséquemment que si la production n'en était pas possible auparavant, si le retard est excusable ou si des faits nouveaux ressortent des preuves administrées d'office par le juge», se réfère expressément à la production du moyen de preuve. De surcroît, l'art. 198 al. 1 let. c CPC/FR prévoit que la preuve par titres est faite par la production desdits titres et l'art. 158 al. 2 CPC/FR exige expressément que les pièces en mains du demandeur soient jointes à la demande. Il n'est donc nullement insoutenable de considérer que l'administration de la preuve par titres ne peut être complétée, jusqu'au début de l'administration des preuves, que par la production de titres, une telle exigence ne pouvant être contournée par la simple réserve de produire ultérieurement des titres.
3.3.3. La défenderesse objecte encore que le rapport de l'expert privé E._ est daté du 9 octobre 2007, soit bien après la séance du 14 mai 2007, ce qui démontrerait que sa production n'était pas possible auparavant. Remis le 10 octobre 2007, il aurait été produit sans délai.
Le seul fait qu'un rapport d'expertise privée ait été établi à une certaine date n'exclut pas encore qu'il aurait pu l'être à une date antérieure, et la défenderesse ne cherche pas à démontrer qu'il eût été impossible d'obtenir un tel rapport avant le début de l'administration des preuves. Au demeurant, il n'apparaît pas qu'elle ait soulevé cet argument dans le cadre de son appel (cf. art. 311 al. 1 CPC et ATF 142 III 413 consid. 2.2.4), de sorte que le moyen est irrecevable sous l'angle du principe de l'épuisement des griefs (ATF 133 III 638 consid. 2 p. 640).
3.3.4. La défenderesse rappelle qu'en lien avec le projet de construction au chemin de L2._, elle avait requis la production, par l'autorité compétente, des dossiers de mise à l'enquête et de permis de construire ainsi que la mise en oeuvre d'une expertise; or la production des pièces 17 à 22 du bordereau du 10 octobre 2007 correspondrait à une partie du moyen de preuve requis et accepté.
Compte tenu toutefois des exigences procédurales quant à la production des titres en mains du justiciable, la défenderesse ne peut pas invoquer le fait qu'elle a requis la production de pièces par un tiers pour produire ensuite, postérieurement au début de l'administration des preuves, certaines pièces qui se recouperaient avec sa réquisition, sauf à démontrer que cette production n'était pas possible auparavant, ce qu'elle ne prétend pas.
3.3.5. Compte tenu de ce qui précède, c'est à tort que la défenderesse voit dans le rejet de ses «offres de preuves» une violation du droit d'être entendu garanti par l'art. 29 al. 2 Cst. ainsi qu'une violation du droit à la preuve découlant de l'art. 8 CC. En effet, ces deux dispositions confèrent aux parties le droit de faire administrer les preuves pertinentes uniquement si elles sont offertes en temps utile et dans les formes requises par la loi de procédure applicable (ATF 140 I 99 consid. 3.4; 129 III 18 consid. 2.6 et les arrêts cités; ATF 114 II 289 consid. 2a). Or tel n'a précisément pas été le cas en l'espèce, pour les motifs exposés ci-dessus.
3.3.6. La défenderesse échoue ainsi à démontrer que les pièces litigieuses auraient été arbitrairement écartées du dossier pour tardiveté au sens de l'art. 130 al. 2 CPC/FR, grief qui, comme elle le relève à juste titre, ne pouvait être soulevé que dans un appel contre la décision sur le fond, aucune voie de droit n'étant ouverte contre la décision prise par le Président du Tribunal civil le 17 novembre 2008.
Pour le surplus, la défenderesse ne prétend pas que des faits nouveaux ressortant des preuves administrées auraient permis de réintroduire les pièces écartées, et ne conteste de toute façon pas le déroulement des faits présenté par l'arrêt attaqué à compter du moment où l'expertise judiciaire a été transmise aux parties le 25 juillet 2014 (cf. consid. 3.2.3 supra).
3.3.7. En définitive, il convient de s'en tenir au constat que les pièces retirées du dossier ne pouvaient pas être prises en compte, y compris dans le cadre de l'expertise judiciaire.
4.
4.1. La défenderesse se plaint ensuite d'une constatation inexacte de certains faits pertinents pour l'issue du litige.
4.1.1. En tant qu'il se réfère au rapport d'expertise privée du 9 octobre 2007, le grief tombe à faux puisque, comme on l'a vu, cette pièce ne peut pas être prise en compte (cf. consid. 3.3.3 supra).
4.1.2. S'agissant de la créance d'honoraires invoquée en lien avec le projet de L2._, créance dont le montant serait de 78'000 fr. à dire d'expert judiciaire, la défenderesse se borne à faire valoir de manière purement appellatoire que les pièces attestant de son travail, quand bien même elles avaient été écartées du dossier, «figuraient également dans les dossiers de mise à l'enquête et permettai[en]t sans équivoque de valider l'estimation de l'expert».
Ce faisant, la défenderesse ne s'en prend nullement à la motivation de l'arrêt entrepris, selon laquelle le montant de 78'000 fr. retenu par l'expert pour les honoraires de Y._ - directeur de la défenderesse - a été calculé sur la base de pièces qui n'ont pas été écartées du dossier, mais qui ont été établies de manière unilatérale par la défenderesse et n'ont pas de caractère probant, tandis que les pièces qui ont été écartées du dossier ne peuvent pas être utilisées pour établir l'étendue du travail de la défenderesse, laquelle échoue donc à prouver sa créance compensante liée au chantier de L2._. La critique apparaît ainsi irrecevable (cf. consid. 2.2 supra).
4.1.3. La défenderesse conteste avoir admis, par son directeur Y._, le montant de 55'315 fr. relatif aux travaux effectués en régie par la demanderesse sur le chantier de L1._.
Les juges cantonaux se sont fondés sur les déclarations faites par le prénommé, doté de la signature individuelle, lors de son audition le 14 mai 2007 (« J'étais d'accord, sur le principe, de payer les bons de régie par gain de paix. Nous avons effectivement convenu d'un chiffre, soit celui articulé par le représentant de B._ SA de 55'315 fr. Il y a eu un accord de principe sur ce montant-là, malgré que les bons de régie n'étaient pas signés »). Les juges fribourgeois ont considéré que l'accord ainsi intervenu sur le montant de 55'315 fr. était achevé et qu'on ne discernait pas en quoi il aurait pu être rompu ultérieurement lorsque l'entrepreneur avait refusé de discuter sur les autres dossiers; aucun allégué n'évoquait un lien entre cet accord et un accord sur d'autres dossiers litigieux. La défenderesse ne démontre aucunement en quoi une telle appréciation serait arbitraire, ce qui clôt toute discussion.
4.1.4. La défenderesse reproche également aux juges cantonaux d'avoir constaté de façon inexacte - dans une motivation subsidiaire à celle fondée sur l'accord précité (cf. consid. 4.1.3 supra) - que les bons de régie avaient été systématiquement soumis à Y._, lequel avait refusé de les signer en partie, et d'avoir ainsi retenu indûment que la demanderesse avait averti la défenderesse desdits travaux.
La défenderesse ne démontre cependant pas où résiderait l'arbitraire dans l'appréciation des preuves opérée par les juges cantonaux, qui se sont fondés sur les déclarations du témoin T._, ancien chef d'équipe auprès de la demanderesse (« Je m'entendais bien avec la direction des travaux soit M. Y._. Il lui arrivait de me donner des ordres directs pour faire quelques travaux. Je me souviens par exemple de rhabillages qu'il m'a demandé de faire (...). J'ai dû établir des bons de régie mais ils n'ont pas tous été signés car M. Y._ me disait qu'il fallait regarder avec le représentant de B._ SA plus tard. Je les lui ai présentés systématiquement. Il en a signé certains mais pas tous. Je ne me rappelle pas s'il y a eu du retard sur ce chantier. Les bons de régie que j'ai donnés à signer correspondaient à du travail que nous avions fait. Lorsqu'il ne signait pas les bons de régie, Y._ me disait qu'il n'avait pas le temps ou qu'il verrait plus tard avec le représentant de B._ SA »).
On ne discerne pas davantage de violation de l'art. 8 CC. Il sied de rappeler que cette disposition ne dicte pas au juge comment il doit forger sa conviction (ATF 128 III 22 consid. 2d; 127 III 248 consid. 3a). Ainsi, lorsque l'appréciation des preuves convainc le juge qu'un fait est établi à satisfaction de droit ou réfuté, la question de la répartition du fardeau de la preuve ne se pose plus et le grief tiré de la violation de l'art. 8 CC devient sans objet (ATF 128 III 271 consid. 2b/aa in fine; 117 II 387 consid. 2e). L'art. 8 CC ne saurait être invoqué pour faire corriger l'appréciation des preuves (ATF 130 III 321 consid. 5; 127 III 248 consid. 3a).
4.2.
4.2.1. La défenderesse reproche à la cour cantonale d'avoir violé le principe de la libre appréciation des preuves consacré par l'art. 157 CPC en s'abstenant de porter une appréciation sur le rapport de l'expert privé E._ du 9 octobre 2007 - qui aurait été écarté à tort du dossier - et en s'écartant «sans raison apparente» de certaines conclusions de l'expertise judiciaire relatives aux projets de L2._ et de L1._.
4.2.2. L'art. 157 CPC - applicable à la procédure de deuxième instance devant la Cour d'appel civil dès lors que la décision de première instance avait été communiquée aux parties postérieurement à l'entrée en vigueur du CPC le 1er janvier 2011 (art. 405 al. 1 CPC) - dispose que le tribunal établit sa conviction par une libre appréciation des preuves administrées. Selon la jurisprudence, il n'y a violation du principe de la libre appréciation des preuves que si le juge dénie d'emblée toute force probante à un moyen de preuve ou s'il retient un fait contre son intime conviction; en revanche, une appréciation des preuves fausse, voire arbitraire, ne viole pas le principe de la libre appréciation des preuves (arrêts 4A_607/2015 du 4 juillet 2016 consid. 3.2.2.2; 4A_165/2009 du 15 juin 2009 consid. 5; ATF 143 III 297 consid. 9.3.2 p. 333).
4.2.3. En l'espèce, la cour cantonale a dûment motivé les raisons pour lesquelles elle ne tenait pas compte de certaines pièces écartées du dossier - dont le rapport d'expertise privée E._ du 9 octobre 2007 -, y compris en tant qu'elles fondaient certaines conclusions de l'expertise judiciaire (cf. consid. 3.3 supra). On ne discerne aucune violation du principe de la libre appréciation des preuves.
5.
5.1. La défenderesse reproche aux juges cantonaux d'avoir violé l'art. 16 CO. Rappelant que la forme écrite avait été réservée pour les travaux en régie, elle concède que les parties pouvaient à tout moment supprimer cette réserve de manière informelle, notamment en fournissant et acceptant sans réserve les prestations contractuelles nonobstant l'inobservation de la forme écrite. Elle objecte cependant qu'il incombait à la demanderesse de prouver une telle acceptation sans réserve; or le simple constat que la défenderesse avait refusé de signer plusieurs bons de régie aurait dû conduire les juges cantonaux à la conclusion qu'elle n'avait pas accepté sans réserve ces travaux.
5.2. Le grief de violation de l'art. 16 CO tombe à faux au regard des faits constatés par l'autorité cantonale. En effet, si celle-ci a retenu que le représentant de la défenderesse avait refusé de signer certains bons de régie qui lui étaient présentés - au motif qu'il n'avait pas le temps ou qu'il verrait plus tard avec le représentant de la demanderesse -, il ne ressort pas moins de l'arrêt attaqué que la défenderesse a accepté sans réserve les prestations contractuelles en question, dont elle avait été avertie et qu'elle avait parfois commandées directement auprès des employés de la demanderesse, laquelle avait dûment exécuté les travaux facturés (cf. consid. 4.1.4 supra). Au surplus, il a été retenu, d'une manière qui échappe au grief d'arbitraire, que la défenderesse avait ultérieurement admis, par son directeur Y._, le montant de 55'315 fr. relatif aux travaux effectués en régie par la demanderesse (cf. consid. 4.1.3 supra).
6.
6.1. La défenderesse fait encore grief au juges cantonaux d'avoir violé l'art. 374 CO en ne déterminant pas le prix des travaux effectués en régie sur le chantier de L1._ selon les critères posés par cette disposition, soit d'après la valeur du travail et les dépenses de l'entrepreneur; les juges se seraient indûment contentés d'affirmer que la défenderesse n'avait pas remis en cause le taux de 7% retenu par l'expert s'agissant du taux de régie appliqué aux montants métrés, alors que la défenderesse avait exigé de déterminer la réalité des travaux exécutés et leur coût.
6.2. Cette critique tombe à faux du seul fait que la cour cantonale, dans une motivation principale qui rend superflue la détermination du prix selon l'art. 374 CO, a constaté sans arbitraire que les parties avaient convenu ultérieurement d'un montant de 55'315 fr. pour les travaux effectués en régie par la demanderesse sur le chantier de L1._ (cf. consid. 4.1.3 supra). Au surplus, dans la mesure où l'expert judiciaire a confirmé que le montant des travaux en régie était conforme à ce qui avait été effectué sur le chantier de L1._ et que les taux de régie appliqués aux montants métrés étaient corrects, on ne discerne pas de violation de l'art. 374 CO.
7.
7.1. La défenderesse se plaint enfin d'une violation de l'art. 548 CO en lien avec la créance de 78'000 fr. qu'elle invoque à l'encontre de la demanderesse pour la construction d'un immeuble au chemin de L2._. Elle rappelle qu'en vue de la réalisation de ce projet, les parties avaient formé une société simple au sens des art. 530 ss CO; or selon l'art. 548 CO, celui qui a fait un apport dans la société simple a droit lors de la liquidation au prix pour lequel son apport a été accepté, ou à défaut à la valeur de la chose au moment de l'apport. Comme la valeur de l'apport en travail de la défenderesse a été chiffrée à 78'000 fr. par l'expert, les juges cantonaux auraient considéré à tort que la défenderesse ne pouvait pas l'invoquer en compensation, faute de liquidation de la société simple.
7.2. Cette critique porte sur une motivation retenue à titre subsidiaire. En effet, le motif principal, et suffisant à lui seul, qui a conduit les juges cantonaux à ne pas retenir la créance de 78'000 fr. opposée en compensation réside dans le fait que la preuve de la quotité de cette créance n'a pas été apportée à satisfaction. Les juges cantonaux ont relevé que le montant de 78'000 fr. retenu par l'expert judiciaire reposait sur des pièces qui avaient été établies de manière unilatérale par la défenderesse et étaient donc dépourvues de caractère probant, tandis que les pièces qui avaient été écartées du dossier ne pouvaient pas être utilisées pour établir l'étendue du travail de la défenderesse.
Ainsi qu'on l'a vu, les critiques soulevées par la défenderesse contre cette motivation principale se révèlent irrecevables (cf. consid. 4.1.2 supra). Or lorsque la décision attaquée comporte plusieurs motivations indépendantes, alternatives ou subsidiaires, toutes suffisantes pour sceller le sort de la cause, la partie recourante doit, sous peine d'irrecevabilité, démontrer que chacune d'elles est contraire au droit (ATF 138 I 97 consid. 4.1.4 et les arrêts cités). Les griefs soulevés par la défenderesse laissant intacte la motivation principale tirée de l'absence de preuve de la créance opposée en compensation, point n'est besoin d'examiner le grief de violation de l'art. 548 CO dirigé contre la motivation subsidiaire.
8.
Il résulte de ce qui précède que le recours en matière civile doit être rejeté dans la mesure où il est recevable, tandis que le recours constitutionnel subsidiaire est irrecevable.
Vu l'issue des recours, les frais de la présente procédure seront mis à la charge de la défenderesse et recourante (art. 66 al. 1 LTF), qui versera en outre à la demanderesse et intimée une indemnité de 6'500 fr. à titre de dépens (art. 68 al. 1 et 2 LTF).
Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours en matière civile est rejeté dans la mesure où il est recevable.
2.
Le recours constitutionnel subsidiaire est irrecevable.
3.
Les frais judiciaires, arrêtés à 5'500 fr., sont mis à la charge de la défenderesse.
4.
La défenderesse versera à la demanderesse une indemnité de 6'500 fr. à titre de dépens.
5.
Le présent arrêt est communiqué aux mandataires des parties et à la Ire Cour d'appel civil du Tribunal cantonal du canton de Fribourg.
Lausanne, le 19 septembre 2017
Au nom de la Ire Cour de droit civil
du Tribunal fédéral suisse
La Présidente: Kiss
La Greffière: Monti