我遇到了Visual Studio 2008网站和SharePoint / MOSS 2007的问题。我们之前有两个Web应用程序项目位于我们的SharePoint结构下面,但由于项目文件和源代码控制的性质,它在我们的团队发展环境。我决定从Web应用程序切换到网站以删除项目文件,直到我有时间将源代码控制更改为TFS。一切正常,但是当我尝试手动构建其中一个网站时,我收到以下错误:
此表达式构建器需要运行SPContext
现在这不是一个真正的问题,因为网站的性质以及它们在加载时如何根据需要进行编译。但这对我的开发团队来说是个问题,因为我们真的希望能够出于各种原因获得成功的构建。
通过使用我们使用的自定义表达式构建器发生问题,该构建器在运行时仍然可以正常工作。只有在编译期间,它才会给我们错误。
对于如何克服这个问题的任何想法或想法将不胜感激。
干杯,
布伦丹
答案 0 :(得分:0)
SPContext.Current来确定它们正在运行的当前SharePoint上下文。通过更改,这在构建过程中显然不再可能。
一种选择是构建一些保护,如果找不到有效的SPContext,则会根据需要使用新的SPSite / SPWeb对象创建,以提供该上下文。这可能需要一些重新架构,具体取决于表达式构建器的设计方式,特别是因为您现在需要正确处理创建的SPSite和SPWeb对象(使用SPContext时不需要)。
另一种选择是使用模拟框架,例如Typemock Isolator。这将模拟/伪造SPContext。但是,您需要重新构建代码才能使用它,我相信。从好的方面来说,你可以继续使用SPContext。