【问题标题】:Expression Builder requires SPContext to run表达式生成器需要 SPContext 才能运行
【发布时间】:2009-09-16 01:56:20
【问题描述】:

我在使用 Visual Studio 2008 网站和 SharePoint/MOSS 2007 时遇到问题。我们之前在 SharePoint 结构下有 2 个 Web 应用程序项目,但由于项目文件和源代码控制的性质,它在我们的团队开发环境。我决定从 Web 应用程序切换到网站以删除项目文件,直到我有时间将源代码控制更改为 TFS。一切正常,但是当我尝试手动构建其中一个网站时,出现以下错误:

此表达式生成器需要 SPContext 才能运行

现在这不是一个真正的问题,因为网站的性质以及它们在加载时如何根据需要进行编译。但这对我的开发团队来说是个问题,因为出于各种原因,我们真的希望能够成功构建。

问题是通过使用我们使用的自定义表达式生成器出现的,它在运行时仍然可以正常工作。只有在编译期间它才会给我们错误。

任何关于如何克服这个问题的想法或想法将不胜感激。

干杯,

布伦丹

【问题讨论】:

    标签: c# visual-studio-2008 sharepoint sharepoint-2007 web


    【解决方案1】:

    SPContext.Current 被许多 SharePoint 应用程序用来确定它们正在运行的当前 SharePoint 上下文。随着所做的更改,这在构建过程中显然不再可能。

    一种选择是建立一些保护,如果找不到有效的 SPContext,则根据需要使用新的 SPSite/SPWeb 对象来创建它以提供该上下文。这可能需要根据表达式构建器的设计方式进行一些重新架构,特别是因为您现在需要正确处理创建的 SPSite 和 SPWeb 对象(使用 SPContext 时不需要这样做)。

    另一种选择是使用模拟框架,例如Typemock Isolator。这将模拟/伪造一个 SPContext。但是,我相信您也需要重新构建代码才能使用它。从好的方面来说,您可以只使用 SPContext。

    【讨论】:

    • 导致问题的表达式生成器在另一个程序集中,它自己构建没有问题。似乎 Visual Studio 缺少某些东西,因此当从网站引用程序集时,它不知何故无法在编译时找到所需的 SPContext。正如我所说,在运行时一切都很好。只是有点令人沮丧。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-15
    • 1970-01-01
    • 1970-01-01
    • 2011-03-25
    • 1970-01-01
    相关资源
    最近更新 更多