2010-11-24 87 views
5

我目前正在使用C#並開發一些使用SharePoint Web服務作爲數據源的Silverlight應用程序。在Visual Studio(C#)編譯時設置值?

Sharepoint管理員決定爲了「隔離」用戶,他們必須多次創建相同的SharePoint列表,並且允許每個分支的用戶訪問該分支的相應列表。

這會產生一些問題,因爲我必須爲每個分支的Sharepoint列表設置guid,並編譯5個不同版本的相同應用程序。

最終我決定創建一個ListProperties類,並將當前分支的名稱傳遞給一個方法,以便它返回正確的guid。

所以,現在我設置一個變量(分支)爲「BRANCH-A」,編譯並重命名爲「AppBranchA.xap」。然後爲每個分支做同樣的事情。

有沒有什麼辦法在編譯時傳遞一個字符串,並有變量(並希望應用程序的名稱)自動更改?

我很樂意聽到其他方法來一次管理多個版本。

感謝,接近此

回答

2

的一種方式是使用一個條件編譯標誌來控制哪些GUID值被用於集分支特定屬性。例如,

class ListProperties { 

#if BRANCH-A 
    public static readonly GUID BranchGuid = "Guid #1"; 
#endif 

#if BRANCH-B 
    public static readonly GUID BranchGuid = "Guid #2"; 
#endif 

} 

這允許您通過更改命令行上定義的預處理器符號來控制分支定義的值。

另一種選擇是使用配置文件來存儲分支專用數據。然後,您可以構建應用程序一次,並根據目標分支將其部署到不同的配置文件中。

2

如果使用預編譯指令,則可以實現此目的。

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

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

如果你想變得很花哨,你甚至可以創建新的構建(而不僅僅是調試和發佈)。然後你有相應的指令爲該構建定義。

+0

這不會編譯。 `GUID`不能是`const`成員,並且字符串文字不能隱式轉換爲`GUID` – JaredPar 2010-11-24 22:01:05

相關問題