2009-08-17 13 views
1

Wir haben eine recht umfangreiche VS2008-Lösung, die aus vielen Bibliotheksprojekten besteht, auf die von einem oder mehreren anderen Projekten verwiesen wird. Einige dieser Bibliotheken definieren Dinge wie WCF-Bindungen und Verbindungszeichenfolgen, aber wenn diese von anderen Projekten referenziert werden, scheint es notwendig zu sein, die Bindungseinstellungen aus den .config-Dateien der Bibliotheksprojekte in die ausführbaren Projekte zu kopieren. Es scheint, als würden wir hier etwas übersehen, da dieser Ansatz begonnen hat, die DRY-Prinzipien in vielerlei Hinsicht zu verletzen, wobei doppelte Einstellungen in der gesamten Lösung fehlten. Ändern einer Bindung hat sich zu einer großen Übung in der Suche & ersetzen.Weitergabe von .config-Einstellungen

Ich habe die this project on CodePlex als eine mögliche Lösung angeschaut, aber ich frage mich, ob wir die Prinzipien hinter app/web.config-Dateien missverstehen.

Gibt es einen einfacheren Weg?

Antwort

2

Nicht wirklich nein.

In ausreichend großen Projekten enden Sie mit Einstellungen, die in mehreren Projekten gehen müssen.

Eine Lösung, die ich zuvor verwendet habe, ist eine benutzerdefinierte Aufgabe auf Post-Build ausgeführt werden, um die Konfigurationen zu ändern, um eine bestimmte Variable (sagen '$ generalSettings') mit einer Menge von gemeinsamen Dingen aus einer lokalen Datei I rufe 'local.deploy.properties' auf. Ich benutze NAnt, um dies zu tun.

In diesen Tagen verwende ich eine benutzerdefinierte Lösung, die ich geschrieben habe, um es zu tun (obwohl es die obige Vorgehensweise sowieso kombiniert, aufgrund der Notwendigkeit, lokal zu testen).

Wie auch immer, was ich bekomme, ist dies ein allgemein ungelöstes Problem.

1

Sie müssen die Weitergabe der Einstellungen automatisieren, damit die Dinge ordnungsgemäß funktionieren. Dies kann durch Hinzufügen des Stapelkopierbefehls in Post-Build-Aktionen erfolgen. Sie finden diese Einstellungen im Menü Projekteigenschaften. Um die kopierten Einstellungen für ein bestimmtes Projekt anzupassen, kann die XSLT-Transformation verwendet werden.