Sharepoint 2010 Sharepoint WSP解决方案管理 我们有一个使用SharePoint基金会2010开发的产品。我们在80端口上托管,这是MSF2010的独立安装。现在,我需要在服务器场环境中的不同客户端的不同端口上部署相同的产品。目前,我面临以下一些挑战:

Sharepoint 2010 Sharepoint WSP解决方案管理 我们有一个使用SharePoint基金会2010开发的产品。我们在80端口上托管,这是MSF2010的独立安装。现在,我需要在服务器场环境中的不同客户端的不同端口上部署相同的产品。目前,我面临以下一些挑战:,sharepoint-2010,Sharepoint 2010,我们有css、图像和jquery文件,它们映射到14个配置单元文件夹。因为我们是在独立环境中部署的,所以整个14个配置单元文件夹都是为一个客户端服务的。现在的挑战是,如何为不同的客户端(不同的web应用程序)管理14个配置单元文件夹中的css、jquery和图像文件夹。如果我在一个js文件(test.js)中对一个特定的文件做了一些小的更改,它应该会影响该客户机本身。它不应该影响其他客户端的js(test.js)文件。 因为我们只有一个wsp解决方案,所以我们需要将其添加到解决方案存储库中。因为

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

将解决方案部署到SharePoint 2010时,它们通常打包为WSP,通常称为business area

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

所以如果你的客户有不同的HTML、CSS、JavaScript,考虑将它们打包在不同的WSP中。 每个客户端一个解决方案

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

如果您有应用程序页面,它们可以转到: 14\模板\布局\客户端\u 1\ 14\模板\布局\客户端\u 1\css 14\TEMPLATE\LAYOUTS\Client\u 1\javascript

14\模板\布局\客户端\u 2\ 14\模板\布局\客户端\u 2\css 14\TEMPLATE\LAYOUTS\Client\u 2\javascript

14\模板\布局\客户端\u 3\ 14\模板\布局\客户端\u 3\css 14\TEMPLATE\LAYOUTS\Client\u 3\javascript

如果您有特定于客户端的Web部件,它们可以:

14\TEMPLATE\CONTROLTEMPLATES\Client\u 1\Webpart1 14\TEMPLATE\CONTROLTEMPLATES\Client\u 2\Webpart1 14\TEMPLATE\CONTROLTEMPLATES\Client\u 3\Webpart1


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

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

您不需要将图像、CSS和JS文件打包部署到14个配置单元,而是可以将它们部署到新的文档库中,当您的功能激活时,您的功能将在SPSite/SPWeb中创建新的文档库。您还可以配置WSP,以便将JS、CSS和图像文件上载到这样创建的文档库中

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

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

我发现了这篇博客文章,向您展示了如何实现上述目标:

我还建议您通过本系列了解更多有关将东西打包到WSP的不同选项的信息:

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


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

您好,我也用同样的方法进行了分析。这是实现的最佳实践吗?嗨。包名称和它的ID将是相同的。现在的情况是,可以根据客户端更改OSlution名称和guid吗?这是一种好方法吗?是的,这是最佳做法。您可以使用一个包将所有内容包含在一个包中(记住为每个客户端放置定义良好的文件夹结构),也可以为每个客户端使用包。如果您为每个客户机制作不同的软件包,则必须提供不同的解决方案IdsHi,目前我们只有一个软件包,其中功能已添加到特定文件夹wrt clients中。我正在考虑根据客户更改解决方案id和解决方案名称。另一个小疑问是,几乎没有适用于所有客户机的通用特性。当我升级一个客户端站点时,我可以使用force属性重新激活该功能。这种方法没有问题,对吗