【问题标题】:Sharepoint WSP solution managementSharepoint WSP 解决方案管理
【发布时间】:2014-05-17 08:57:20
【问题描述】:

我们有一个使用 SharePoint Foundation 2010 开发的产品。我们在端口 80 上托管,它是 MSF 2010 的独立安装。现在我需要在不同的端口上为农场环境中的不同客户端部署相同的产品.现在我面临一些挑战如下:

我们有映射到 14 个 hive 文件夹的 css、图像、jquery 文件。由于我们是在独立环境中部署的,因此整个 14 个配置单元文件夹都为一个客户端服务。现在的挑战是,如何为不同的客户端(不同的 Web 应用程序)管理 14 个 hive 文件夹中的这些 css、jquery、图像文件夹。如果我对一个特定文件的一个 js 文件(test.js)进行了小的更改,它应该会影响该客户端本身。它不应该影响其他客户端的 js(test.js) 文件。 由于我们只有一个 wsp 解决方案,因此我们需要将其添加到解决方案存储库中。由于 sharepoint 仅允许名称和 GUID 唯一的解决方案。因此,如果我对特定客户端的一个解决方案进行了一些更改,当我将其上传到解决方案存储库时,它将不允许,因为旧的 wsp 已经存在。那么,如何管理 wsp 为多个客户服务呢? .如果我为一个客户做更改,它不应该影响其他客户。 请让我知道这方面的最佳做法。

【问题讨论】:

    标签: sharepoint-2010


    【解决方案1】:

    鉴于可以在 SPSite 或 SPWeb 级别激活和停用一项功能,对于这种情况可能会有更优雅的解决方案。

    您实际上可以将它们部署到一个新的文档库中,而不是将您的图像、CSS 和 JS 文件打包以部署到 14 Hive,当您的功能被激活时,您的功能在 SPSite/SPWeb 中创建该文档库。您还可以配置您的 WSP,以便将 JS、CSS 和图像文件上传到如此创建的文档库。

    这样解决了您的一个问题,您可以直接通过文档库手动修改一个客户端的文件,并且不会影响其他网站/客户端。

    此外,在此配置中,您的单个 WSP 就足够了,并且不应该发生冲突,因为当您只为一个客户端更改一些代码时,您不会部署全新的 WSP。

    我发现这篇博文向您展示了如何实现上述目标:http://jcapka.blogspot.com/2011/05/deploying-document-library-including.html

    我也会推荐这个系列来了解更多关于将东西打包到 WSP 的不同选项:http://blogit.create.pt/blogs/andrevala/archive/2007/12/02/SharePoint-2007-Deployment_3A00_-Overview.aspx

    它是为 SharePoint 2007 编写的,但大部分内容在 2010 年没有改变。

    如果上述方法有任何挑战,您可能会找到解决方法。

    【讨论】:

      【解决方案2】:

      当您将解决方案部署到 SharePoint 2010 时,它们通常打包为 WSP,通常称为业务领域。

      如果您使用的是 Visual Studio,请打开“查看 -> 其他窗口 -> 包资源管理器”以浏览 WSP 的内容。

      因此,如果您的客户有不同的 html、css、javascript,请考虑将它们打包在不同的 WSP 中。 每个客户一个解决方案

      这样在 14 个 hive 下,每个解决方案 (WSP) 项都将包含在各自的文件夹中,这意味着一个解决方案的 css 更改不会影响其他解决方案。

      如果您有申请页面,它们可以: 14\模板\布局\客户端_1\ 14\TEMPLATE\LAYOUTS\Client_1\css 14\TEMPLATE\LAYOUTS\Client_1\javascript

      14\TEMPLATE\LAYOUTS\Client_2\ 14\TEMPLATE\LAYOUTS\Client_2\css 14\TEMPLATE\LAYOUTS\Client_2\javascript

      14\TEMPLATE\LAYOUTS\Client_3\ 14\TEMPLATE\LAYOUTS\Client_3\css 14\TEMPLATE\LAYOUTS\Client_3\javascript

      如果您有特定于客户端的 webpart,他们可以:

      14\TEMPLATE\CONTROLTEMPLATES\Client_1\Webpart1 14\TEMPLATE\CONTROLTEMPLATES\Client_2\Webpart1 14\TEMPLATE\CONTROLTEMPLATES\Client_3\Webpart1

      您只需在 WSP 中创建定义良好的目录结构。

      【讨论】:

      • 您好。我也以同样的方式进行了分析。这是实现的最佳实践吗?
      • 嗨。包名称和它的 ID 将是相同的。现在情况是可以根据客户更改 OSlution 名称和 guid 吗?这是好方法吗?
      • 是的,这是最佳做法。
      • 您可以拥有一个包以将所有内容包含在一个包中(请记住为每个客户端放置明确定义的文件夹结构),或者您可以为每个客户端拥有一个包。如果您为每个客户制作不同的包,则必须提供不同的解决方案 ID
      • 您好,现在我们只有一个软件包,其中在特定文件夹 wrt 客户端中添加了功能。我正在考虑根据客户更改解决方案 ID 和解决方案名称。另一个小疑问是,几乎没有适用于所有客户端的通用功能。当我升级客户的站点之一时,我可以使用 force 属性重新激活该功能。这种方法没有问题
      猜你喜欢
      • 2011-01-10
      • 1970-01-01
      • 1970-01-01
      • 2014-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-12
      • 1970-01-01
      相关资源
      最近更新 更多