我有一个自定义功能,它是文档库中的编辑控制块(ECB)操作,可以作为解决方案包(WSP)进行部署。当您下拉文件旁边的下拉列表时,您会看到该功能,当选择了ECB操作时,用户将被重定向到自定义应用程序页面。
我允许将此功能安装到所有4个不同的范围:Farm,WebApplication,Site和Web。它们中的每一个都将位于不同的解决方案包中,但共享相同的FeatureId,SolutionId等。假设该功能一次只安装在一个范围内。如果管理员部署它,激活它,如果我们他/她想要更改范围,停用它,一切正常。如果由于某种原因管理员没有首先停用它,ECB操作将在文档库中有重复的条目。
例如,假设我们将其安装为Site范围(网站集),然后决定我们希望它在Farm范围内,而不是首先停用它,而只是转到解决方案管理并收回并删除它。如果我们查看之前可用的网站集,我们就看不到ECB的行动。
如果我们然后添加Farm范围解决方案包并进行部署,我们现在将在网站集中看到ECB操作,即使我们尚未部署它并且feature.xml ActivateOnDefault属性设置为false。如果我们继续并激活它,我们现在将看到两个ECB行动。
有没有人有任何想法?我在下面添加了feature.xml和elements.xml。
TIA, 马格努斯
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
RegistrationType = “清单”
RegistrationId = “101”
位置= “EditControlBlock”
序列= “300”
的ImageUrl = “/ _布局/图像/我的功能/ MyOtherPic.gif”
Title =“我的特色”
Description =“我的ECB功能”
&GT;
答案 0 :(得分:0)
AFAIK,这种行为是设计的。 您需要添加或扩展FeatureReceiver 并覆盖一些方法,尤其是FeatureUninstalling 您需要在每个地方停用您的功能 它仍然被激活的地方。
您可以记录每次激活,例如使用(顶级)网络属性。
Walkthrough: Creating a SharePoint Feature Receiver and Custom Link with WSS Extensions
祝你好运!
答案 1 :(得分:0)
如果有其他人碰到这个并且碰巧看到这篇文章。
通过回缩移除特征时的行为取决于元素类型。对于我在我的情况下使用的ECB元素,如果我在feature.xml文件中为每个范围都有唯一的SolutionId和Feature Id(Id),那么如果我在不同的功能范围内安装了一个功能,它就会被删除并且不会出现重复项
答案 2 :(得分:0)