代码之家  ›  专栏  ›  技术社区  ›  Ramiz Uddin

SharePoint自定义模块开发和部署

  •  0
  • Ramiz Uddin  · 技术社区  · 15 年前

    很好的一天,

    我们正在为SharePoint开发自定义模块(信息管理系统)。此模块的项目文件是包含用户控件的类库。用户控件基于SmartPart和Ajax扩展工具包。该模块有一个单独的数据库,其中有表/视图/存储过程。

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

    • 还原模块数据库的备份副本 在预生产或测试时 环境
    • 安装Ajax扩展工具包
    • 修改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应用程序根文件夹来定位用户控件。 智能部件是否可以从12个配置单元的template\controltemplates文件夹中开始选择用户控件?

    我们正在寻找一种更合适的方法。 对于我来说,针对这种情况,一个好的实践是消除所有手动配置/设置步骤。模块用户甚至不需要做一个单一的手动设置来启动和运行这件事。 我相信有很多方法可以比这更好地做到这一点,但最好的方法是什么呢?

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

    我们正在使用一组工具,如wspbuilder、用于wss的Visual Studio扩展、stsdev、spvisualdev、SharePoint内容部署向导、SharePoint管理工具、SharePoint安装程序。

    谢谢。

    祝您今天过得愉快!

    2 回复  |  直到 15 年前
        1
  •  1
  •   Zeb    15 年前

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

    SmartPart控件提示: 确保在处于编辑模式时打开控件中的任何验证程序,否则最终将填充所有字段以发布页面。在编辑模式下,SharePoint会做一些有趣的事情,因此请确保在编辑模式下使用SmartPart测试所有用户控件。

    部署到资源 我认为这可能是一个权限问题,通常人们会将程序集部署到80-bin,我不记得为了使其工作而做了什么特殊的事情。 由于WSP是通过SharePoint部署的,因此如果SharePoint没有“资源”文件夹的权限,则可能会失败。 可能的问题: a)资源文件夹不存在于inetpub中或根文件夹所在的位置。(尝试创建结构) b)资源文件夹没有设置与bin文件夹相同的权限。(测试是否可以将程序集部署到肥料箱) c)资源文件夹是只读的,这导致了问题。(起飞只读) d)SharePoint从不允许通过wsp将程序集以外的文件显示到根文件夹(不太可能,也不确定)

    我对解决此类问题的建议是将wsp的内容提取到一个文件夹中(将.wsp扩展名重命名为.cab并提取.cab)。处理文件和结构>从中创建cab文件(Google this)>将扩展名重命名回.wsp>部署>测试>如果不起作用,请再次处理结构,然后重试。

        2
  •  0
  •   Janis Veinbergs    15 年前
    • 修改Web应用程序的web.config
      对于连接字符串,SafeControl
      输入Ajax扩展,
      EnableSessionState设置为true of
      页面,添加Ajax扩展标记条目,
      并取消对以下行的注释:

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

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

    • 在Web中创建UserControls文件夹 应用程序根目录和复制所有用户 控制那里。如SmartPart所愿(可以 只有,我想)定位用户控件

    如果我是正确的,您可以创建名为“80”(就像文件夹“12”)的文件夹,并在预定义的文件夹中部署自己的文件夹。

    From WSPBuilder documentation :

    80文件夹表示 WebApplication文件夹并包含 以下子文件夹80\bin, 80\ wCatalog,80\资源。80箱 包含DLL。如果您有 Web部件定义(Web部件、DWP) 文件,它们进入wcatalog 文件夹。任何文件都可以添加到 资源文件夹。

    所以把它们放在资源文件夹中可能是个好主意?

    推荐文章