我有一个使用 Visual Studio 开发的事件接收器,我想部署它。但在这种情况下,我想部署它而不将其与任何列表关联。(稍后我通过 PowerShell 将事件接收器添加到特定列表。)

我知道如果我设置 ScopeSite 然后接收器将为所有列表和库触发。我知道如果我设置 ScopeWeb 并提供一个值 ListUrl 那么它只会绑定到指定的列表。

但是,似乎如果我设置 ScopeWeb 并且不指定 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 将其附加到实际列表。

许可以下: CC-BY-SA归因
scroll top