Sachverhalt: Sachverhalt: A. Die X._ AG (Bestellerin) beabsichtigte, ein Fabrikgebäude mit Büros und einer Wohnung zu erstellen. In diesem Zusammenhang schloss sie mit der Kollektivgesellschaft B._ (Beklagte 2) am 9. Juni 1989 einen Vertrag für Architekturleistungen und am 23. Juli 1991 mit A._ (Beklagter 1) einen Werkvertrag betreffend sanitäre Installationen. Zu Beginn der im Mai 1991 aufgenommenen Bauarbeiten wurde unter Beizug des geotechnischen Instituts festgestellt, dass das Fundationsniveau ca. 1-1.5 m unterhalb des gemessenen Grundwasserspiegels lag, weshalb empfohlen wurde, den Grundwasserspiegel abzusenken. Am 17. Juni 1991 berechnete die Beklagte 2 die Mehrkosten infolge Grundwasser und unterbreitete der Bestellerin drei Offerten zur Lösung des Problems. Die von der Bestellerin gewählte Variante wurde mit der Grössenordnung von Fr. 294'800.-- veranschlagt. Eine entsprechende Zahlung wurde geleistet. Im November 1992 montierte der Beklagte 1 im Inneren des Gebäudes eine Pumpenanlage (zwei Pumpen und einen Pumpenschacht). Bereits im Verlauf des Jahres 1992 wurde der Bau aus finanziellen Gründen eingestellt. Im November 1993 übergab die Beklagte 2 das Gebäude der Bestellerin als Rohbau. Es wurde von der Bestellerin nie fertiggestellt. A. Die X._ AG (Bestellerin) beabsichtigte, ein Fabrikgebäude mit Büros und einer Wohnung zu erstellen. In diesem Zusammenhang schloss sie mit der Kollektivgesellschaft B._ (Beklagte 2) am 9. Juni 1989 einen Vertrag für Architekturleistungen und am 23. Juli 1991 mit A._ (Beklagter 1) einen Werkvertrag betreffend sanitäre Installationen. Zu Beginn der im Mai 1991 aufgenommenen Bauarbeiten wurde unter Beizug des geotechnischen Instituts festgestellt, dass das Fundationsniveau ca. 1-1.5 m unterhalb des gemessenen Grundwasserspiegels lag, weshalb empfohlen wurde, den Grundwasserspiegel abzusenken. Am 17. Juni 1991 berechnete die Beklagte 2 die Mehrkosten infolge Grundwasser und unterbreitete der Bestellerin drei Offerten zur Lösung des Problems. Die von der Bestellerin gewählte Variante wurde mit der Grössenordnung von Fr. 294'800.-- veranschlagt. Eine entsprechende Zahlung wurde geleistet. Im November 1992 montierte der Beklagte 1 im Inneren des Gebäudes eine Pumpenanlage (zwei Pumpen und einen Pumpenschacht). Bereits im Verlauf des Jahres 1992 wurde der Bau aus finanziellen Gründen eingestellt. Im November 1993 übergab die Beklagte 2 das Gebäude der Bestellerin als Rohbau. Es wurde von der Bestellerin nie fertiggestellt. B. Im Januar 1994 kam es im Untergeschoss des Fabrikrohbaus zu einer Überflutung, nachdem beide vom Beklagten 1 eingebauten Pumpen wegen Verkalkung ausgefallen waren. Die Bestellerin reichte hierauf beim Richteramt Bucheggberg-Wasseramt ein Begehren um vorsorgliche Beweisführung ein. Nach Durchführung eines Augenscheins im Rahmen dieses Verfahrens änderte sie am 4. November 1996 ihre Firma in "Y._ AG" und trat am 9. Dezember 1996 alle Ansprüche aus Verträgen, die sie im Zusammenhang mit dem geplanten Neubau abgeschlossen hatte, an eine unter der Firma "X._ AG" (Klägerin) neu gegründete Aktiengesellschaft ab. Die entsprechende Vereinbarung wurde für beide Parteien von derselben Person, der Alleinaktionärin der Bestellerin und Mehrheitsaktionärin der Klägerin, unterzeichnet. In der Folge wurde über die Bestellerin der Konkurs eröffnet. C. Am 6. März 1997 reichte die Klägerin gegen die Beklagten beim Richteramt Bucheggberg-Wasseramt ein Vorladungsbegehren ein und machte ihnen gegenüber unter solidarischer Haftbarkeit Schadenersatzansprüche geltend. Im Verlaufe des Verfahrens bezifferte sie die Forderung auf Fr. 3'098'000.-- nebst Zins. Das Richteramt wies die Klage ab. Gleich entschied auf Appellation der Klägerin am 25. Januar 2005 das Obergericht des Kantons Solothurn. C. Am 6. März 1997 reichte die Klägerin gegen die Beklagten beim Richteramt Bucheggberg-Wasseramt ein Vorladungsbegehren ein und machte ihnen gegenüber unter solidarischer Haftbarkeit Schadenersatzansprüche geltend. Im Verlaufe des Verfahrens bezifferte sie die Forderung auf Fr. 3'098'000.-- nebst Zins. Das Richteramt wies die Klage ab. Gleich entschied auf Appellation der Klägerin am 25. Januar 2005 das Obergericht des Kantons Solothurn. D. Gegen dieses Urteil hat die Klägerin sowohl staatsrechtliche Beschwerde als auch Berufung erhoben. Mit der Berufung verlangt sie, den angefochtenen Entscheid aufzuheben und die Sache zu neuer Entscheidung an die Vorinstanz zurückzuweisen. Beide Beklagten schliessen im Wesentlichen auf kostenfällige Abweisung der Berufung, soweit darauf einzutreten ist. 