首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sharepoint功能升级

Sharepoint功能升级
EN

Stack Overflow用户
提问于 2012-01-06 17:31:59
回答 1查看 1.4K关注 0票数 1

我的feature.template.xml中有以下内容

代码语言:javascript
复制
...
 <VersionRange BeginVersion="1.0.0.1" EndVersion="1.0.0.2">
      <CustomUpgradeAction Name="1.0.0.1_TO_1.0.0.2"></CustomUpgradeAction>
    </VersionRange>
     <VersionRange BeginVersion="1.0.0.2" EndVersion="1.0.0.3">
      <CustomUpgradeAction Name="1.0.0.2_TO_1.0.0.3"></CustomUpgradeAction>
    </VersionRange>
...

我的功能升级事件如下:

代码语言:javascript
复制
public override void FeatureUpgrading(SPFeatureReceiverProperties properties, string upgradeActionName, System.Collections.Generic.IDictionary<string, string> parameters)
        {
            using (SPSite site = (SPSite)properties.Feature.Parent)
            using (SPWeb mySite = site.RootWeb)
            {
                switch (upgradeActionName)
                {
                    case "1.0.0.1_TO_1.0.0.2":
                       //execute logicA
                       break;
                    case "1.0.0.2_TO_1.0.0.3":
                       //execute logicB
                       break;
                    default:
                       break;
                  }
             }

我说的对吗?如果站点当前的版本是1.0.0.0,它将升级到v1.0.03,同时执行上面的logicA和logicB。这意味着sharepoint会将每个版本的upgrade.Is的功能升级事件称为正确吗?还是我需要做一些不同的事情来实现这一点?

我也有以下关注:

  • ,BeginVersion和EndVersion到底是什么意思?
  • I特别不懂BeginVersion。如果我将其设置为1.0.0.1,而不是1.0.0.2,会发生什么呢?

任何帮助将不胜感激,因为我没有找到任何良好的相关细节在网上或书籍。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-26 09:54:59

当您向VS SharePoint项目添加新特性时,Visual将使用0.0.0.0版本初始化您的特性。

在“属性”窗口中,可以为功能设置版本号。当您想升级现有功能时,您必须定义要升级操作的版本范围(代码、新清单、.)会发生的。

例如:您部署了您的功能而不更改版本号。您当前部署的特性的版本号为0.0.0.0。您希望升级您的特性并将版本号设置为2.0.0.0。

如果按以下方式定义版本范围:

代码语言:javascript
复制
<VersionRange BeginVersion="1.0.0.0" EndVersion="2.0.0.0">

您将注意到调用SPFeature.Upgrade()时不会发生任何事情,因为0.0.0.0不在定义的版本范围内。

如果您使用此版本范围

代码语言:javascript
复制
<VersionRange EndVersion="2.0.0.0">

代码语言:javascript
复制
<VersionRange BeginVersion="0.0.0.0" EndVersion="2.0.0.0">

您将注意到您的FeatureUpgrading事件接收器或其他升级操作将被触发。您的升级功能现在有2.0.0.0个版本号。

如果再次调用SPFeature.Upgrade,什么也不会再次发生,因为2.0.0.0超出了定义的版本范围。所以BeginVersion包括在内,EndVersion不包括在内。

如果使用后一个版本范围,版本号在0.0.0.0 - 1.x.x.x之间的每个特性都将被升级。

我认为您也可以将BeginVersion和EndVersion属性完全排除在外。然后,您的升级将在每个SPFeature.Upgrade()调用中触发。(待核实)

更多信息: Chris‘’Brien写了一个关于这个主题的有趣的文章系列cfr。http://www.sharepointnutsandbolts.com/2010/06/feature-upgrade-part-1-fundamentals.html

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8761928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档