部署事件接收器而不与任何列表关联
-
10-12-2019 - |
题
我有一个使用 Visual Studio 开发的事件接收器,我想部署它。但在这种情况下,我想部署它而不将其与任何列表关联。(稍后我通过 PowerShell 将事件接收器添加到特定列表。)
我知道如果我设置 Scope
到 Site
然后接收器将为所有列表和库触发。我知道如果我设置 Scope
到 Web
并提供一个值 ListUrl
那么它只会绑定到指定的列表。
但是,似乎如果我设置 Scope
到 Web
并且不指定 ListUrl
, ,它的作用与 Site
并与一切联系在一起。这是我的代码
<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<Receivers Scope="Web">
<Receiver>
<Name>AutoNumberDocumentItemAdded</Name>
<Type>ItemAdded</Type
<Assembly>$SharePoint.Project.AssemblyFullName$</Assembly>
<Class>ArticleManagementWorkflow.AutoNumberDocument.AutoNumberDocument</Class>
<SequenceNumber>10000</SequenceNumber>
<Synchronization>Synchronous</Synchronization>
</Receiver>
</Receivers>
</Elements>
有没有一种方法可以在不绑定任何东西的情况下部署和激活接收器?
解决方案
部署事件接收器并且不激活功能。元素文件仅在激活功能时将事件接收器附加到列表。之后将事件接收器从 powershell 附加到列表。
其他提示
还有另一个选项如何将事件接收器添加到特定列表 - 将事件接收器添加到内容类型。
脚步:
- 为列表创建自定义内容类型
- 将事件接收器添加到内容类型
- 将内容类型添加到特定列表中以注册事件接收器
在这种情况下,您将能够控制应在哪个列表上注册事件接收器。
请参考一篇很棒的文章 演练 3 – 为内容类型开发事件接收器 了解更多详情。
就您而言,您不需要功能。
您所需要的只是一个包含事件接收器类的类库、对程序集进行签名并将其部署到 GAC。然后使用 PowerShell 注册所需列表的事件接收器。
如何将其附加到网络中实际不存在的虚拟列表,然后使用 Powershell 将其附加到实际列表。