2010-11-24 18 views
5

Ich arbeite derzeit mit C# und entwickle einige Silverlight-Anwendungen, die Sharepoint-Webdienste als Datenquellen verwenden.Festlegen von Werten zur Kompilierzeit in Visual Studio (C#)?

Die Sharepoint-Administratoren entschieden, dass die Benutzer zum Trennen der Benutzer die gleiche Sharepoint-Liste mehrmals erstellen müssen und Benutzern aus jedem Zweig Zugriff auf die entsprechende Liste für diesen Zweig gewähren müssen.

Das schafft ein kleines Problem, weil ich die GUID für die Sharepoint-Listen für jeden Zweig festlegen und 5 verschiedene Versionen der gleichen Anwendung kompilieren muss.

Schließlich habe ich beschlossen, eine ListProperties Klasse zu erstellen und den Namen der aktuellen Zweigstelle an eine Methode übergeben, so dass es die richtige GUID zurückgibt.

So jetzt, ich setze eine Variable (Zweig) auf "BRANCH-A", kompilieren und benennen Sie die App zu "AppBranchA.xap". Machen Sie das Gleiche für jeden Zweig.

Gibt es eine Möglichkeit, eine Zeichenfolge zur Kompilierzeit zu übergeben und die Variable (und hoffentlich auch den Namen der App) automatisch zu ändern?

Ich bin bereit, andere Möglichkeiten zur Verwaltung mehrerer Builds auf einmal zu hören.

Dank,

Antwort

2

Ein Weg, um diesen Ansatz ist es, ein bedingte Kompilierung Symbol zu verwenden, um zu steuern, welche GUID Wert für Satz von branchenspezifischen Eigenschaften verwendet wird. Zum Beispiel:

Damit können Sie den Wert der Verzweigungsdefinitionen steuern, indem Sie die definierten Präprozessorsymbole in der Befehlszeile ändern.

Eine andere Option wäre die Verwendung einer Konfigurationsdatei zum Speichern der branchenspezifischen Daten. Sie könnten dann die Anwendung einmal erstellen und sie mit verschiedenen Konfigurationsdateien basierend auf dem Zielzweig bereitstellen.

2

Wenn Sie vorkompilierte Anweisungen verwenden, können Sie dies erreichen.

#if BRANCH_A 
readonly Guid myId = new Guid("some guid"); 
#endif 

#if BRANCH_B 
readonly Guid myId = new Guid("some other guid"); 
#endif 

Wenn Sie wirklich Lust bekommen möchten, können Sie sogar neue schaffen baut (und nicht nur Debug-und Release). Dann haben Sie Ihre entsprechenden Anweisungen für diesen Build definiert.

+0

Dies wird nicht kompiliert. 'GUID' kann kein' const' Member sein und String-Literale sind nicht implizit in 'GUID' konvertierbar – JaredPar

+0

@JaredPar fixed. Es geht immer noch um den Punkt. – scottm

Verwandte Themen