1

我有一个自定义功能,它是文档库中的一个编辑控制块 (ECB) 操作,它被部署为解决方案包 (WSP)。当您按下文件旁边的下拉列表时,您会看到该功能,选择ECB操作时,用户将重定向到自定义应用程序页面。

我允许将此功能安装到所有 4 个不同的范围:Farm、WebApplication、Site 和 Web。它们中的每一个都将位于不同的解决方案包中,但共享相同的 FeatureId、SolutionId 等。假设一次仅将功能安装到一个范围内。如果管理员部署它、激活它,并且如果我们他/她想要更改范围、停用它,那么一切都会正常运行。如果由于某种原因管理员没有首先将其停用,则 ECB 操作将在文档库中具有重复条目。

例如,假设我们将它安装为站点范围(站点集),然后决定我们希望它在农场范围中而不是先停用它,而只是转到解决方案管理并收回并删除它。如果我们查看以前可用的网站集,我们看不到欧洲央行的行动。

如果我们随后添加 Farm 范围解决方案包并部署它,我们现在将在网站集中看到 ECB 操作,即使我们尚未部署它并且 feature.xml ActivateOnDefault 属性设置为 false。如果我们继续激活它,我们现在将看到两个欧洲央行的行动。

有没有人有任何想法?我在下面添加了 feature.xml 和 elements.xml。

TIA,马格努斯

<?xml version="1.0" encoding="utf-8"?>

<?xml version="1.0" encoding="utf-8"?>

RegistrationType="List" RegistrationId="101"
Location="EditControlBlock" Sequence="300"
ImageUrl="/_layouts/images/MyFeature/MyOtherPic.gif" Title="My Feature"
Description="My ECB feature" >

4

3 回答 3

0

AFAIK,这种行为是设计使然。您将需要添加或扩展 FeatureReceiver 并覆盖某些方法,尤其是 FeatureUninstalling,您需要在每个仍处于激活状态的地方停用您的功能。

您可以记录每次激活,例如使用(顶级)Web 属性。

演练:使用 WSS 扩展创建 SharePoint 功能接收器和自定义链接

祝你好运!

于 2009-01-14T14:18:30.150 回答
0

以防其他人遇到这种情况并碰巧看到这篇文章。

通过retractsolution 移除特征时的行为取决于元素类型。对于我在我的案例中使用的 ECB 元素,如果我在每个范围的 feature.xml 文件中都有唯一的 SolutionId 和 Feature Id (Id),则如果我在不同的功能范围中安装功能,它已被删除并且不会显示重复项.

于 2009-01-22T19:02:51.230 回答
0

试试这个,

创建共享点功能的非常简单的方法

于 2009-09-29T11:31:51.310 回答