SharePoint自定义模块开发和部署

时间:2010-02-17 07:39:39

标签: sharepoint deployment user-controls

美好的一天,

我们正在研究SharePoint的自定义模块(信息管理系统)。该模块的项目文件是包含用户控件的类库。用户控件基于SmartPart和AJAX Extension Toolkit。该模块有一个单独的数据库,其中包含表/视图/存储过程。

在开发环境中,我们按以下步骤部署模块:

  • 恢复模块数据库的备份副本 在预生产或测试 环境
  • 安装AJAX Extension Toolkit
  • 修改Web应用程序的web.config以获取连接字符串,AJAX扩展的safecontrol条目,enablesessionstate设置为页面的true,添加AJAX扩展标记条目,并取消注释以下行:

    <add name="Session" type="System.Web.SessionState.SessionStateModule"/>

  • 在Web应用程序根目录中创建UserControls文件夹并复制其中的所有用户控件。正如SmartPart将(我只能假设)找到用户控件

这就是我们的方式。我确定这不是一个好习惯,应该有更好的方法来做到这一点。

  

我的一个问题是我们可以创建一个   单独的web.config文件将   拥有所有必需的标签和设置   所以我们不需要改变网络   应用程序web.config?只是猜测!

由于所有WSPBuilder用户都知道这一点,因此无法修改manifest.xml文件,也无法与Web应用程序文件夹良好集成。我不知道为什么SmartPart选择Web应用程序根文件夹来查找用户控件。 SmartPart是否可以从12-Hive的TEMPLATE \ CONTROLTEMPLATES文件夹中选择用户控件?

我们正在寻找更合适的方法。 对我来说,具体到这种情况,一个好的做法是消除所有手动配置/设置步骤。模块用户甚至不需要进行单一的手动设置来启动和运行。我确信有很多方法可以做到这一点比这更好但是处理它的最佳方法是什么

  

另外,我想提出建议   关于自定义模块开发   SharePoint良好(或最佳)实践。

我们正在使用一组工具,如WSPBuilder,WSS的Visual Studio扩展,STSDEV,SPVisualDev,SharePoint内容部署向导,SharePoint管理工具,SharePoint安装程序。

感谢。

祝你有个美好的一天!

2 个答案:

答案 0 :(得分:1)

有一种方法可以指向SmartPart指向ControlTempltes文件夹,但需要重新编译SmartPart解决方案。要让SmartPart查看12 \ CustomTemplates \ YourFolder \,您需要从codeplex获取SmartPart的代码,将代码内的代码更改为您需要的位置并重新编译并重新打包为WSP。这就是我解决这个问题的方法。如果您这样做并维护自己的版本,将来可以节省开发时间。我们已经完成了这项工作,并将在未来与其他客户重用我们自己的版本。 希望SmartPart的原始代码能够更新以适应这种情况。

SmartPart控件提示: 当您处于编辑模式时,请确保在控件中关闭任何验证器,否则您最终会填写所有字段以发布页面。 SharePoint在编辑模式下执行有趣的操作,因此请确保在编辑模式下使用SmartPart测试所有用户控件。

部署到资源 我认为这可能是一个权限问题,通常人们将程序集部署到80 \ bin,我不记得做任何特别的工作。 由于wsp是通过SharePoint部署的,如果SharePoint没有“资源”文件夹的权限,那么可能会失败。 可能的问题: a)inetpub中或者根文件夹所在的位置不存在资源文件夹。 (尝试创建结构) b)资源文件夹与bin文件夹的权限设置不同。 (测试是否可以将装配部署到bin) c)资源文件夹只读,导致问题。 (起飞只读) d)SharePoint永远不允许通过WSP将组件以外的文件显示到根文件夹(不太可能并且不确定)

我对解决此类问题的建议是将wsp的内容解压缩到一个文件夹中(将.wsp扩展名重命名为.cab并解压缩.cab)。摆弄文件和结构&gt;从它创建一个cab文件(google this)&gt;将扩展名重命名为.wsp&gt;部署&gt;测试&gt;如果它不起作用,再次摆弄结构并再试一次。

答案 1 :(得分:0)

  •   

    修改Web应用程序的web.config
      用于连接线,安全控制
      进入AJAX扩展,
      enablesessionstate设置为true   页面,添加AJAX扩展标记条目,
      并取消注释以下行:

    <add name="Session" type="System.Web.SessionState.SessionStateModule"/>
    

使用类SPWebConfigModification在web.config(examples on adding ajax entries in web.config with code)中添加条目。

  •   

    在web中创建UserControls文件夹   应用程序root并复制所有用户   在那里控制。正如SmartPart所说(可以   只是,我假设)找到用户控件

如果我没错,您只需创建名称为“80”的文件夹(就像文件夹“12”一样)并在预定义的文件夹中部署您自己的文件夹。

From WSPBuilder documentation

  

80文件夹代表   WebApplication文件夹并包含   以下子文件夹80 \ bin,   80 \ wpcatalog,80 \ resources。 80 \箱   包含dll的。如果你有一些   webpart定义(webpart,dwp)   文件,他们进入wpcatalog   夹。任何文件都可以添加到   资源文件夹。

那么将它们放在资源文件夹中可能是个好主意吗?