2010-11-24 115 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