1

我有一个 SharePoint 2013 解决方案项目(内置于 VS2013),其中包含一个设置为 WebApplication 级别的功能,其事件接收器根本没有代码(仅用于测试目的)。

当我将该功能的默认激活属性设置为 true 并部署它时,该功能似乎已被激活,但 ULS 显示以下错误(我用点替换了实际的程序集/文件名):

ArgumentException:无法为功能“........”加载接收器程序集“........” ..”(ID:5e6fc154-bc0d-4768-a558-8d4d8227d92e)。:System.IO.FileNotFoundException:无法加载文件或程序集'........'或它的依赖项之一。该系统找不到指定的文件。

当我尝试停用它时,我得到了同样的错误。当我将默认时激活属性设置为 false 时,当我尝试手动激活它时会出现相同的错误。

我尝试了以下方法但没有成功:

  • 重新启动 IIS 和计时器服务

  • 将项目的 Assembly Deployment Target 属性设置为 WebApplication 和 GlobalAssemblyCache

我要做的就是在 Web 应用程序级别部署我的功能并让事件接收器运行并能够成功激活/停用该功能。

非常感谢您对此提供的帮助。

问候

4

1 回答 1

1

我设法解决了我的问题。

经过大量研究后,我了解到如果 Web 应用程序级别的功能包含事件接收器,那么该程序集必须部署到 GAC。但是,这将导致 SharePoint 全局部署 wsp 包。但我想将包部署到特定的 Web 应用程序。所以我进入包设计窗口,进入高级选项卡,通过选择“从项目输出添加程序集”选项将程序集添加到程序包中,输入其详细信息并选择“GlobalAssemblyCache”选项。最后,我选择了该项目并在其属性窗口中将“Include Assembly In Package”属性设置为 False。(如果不这样做VS编译时会抛出错误)

这导致 SharePoint 通过 VS 自动将包部署到我的 Web 应用程序(或者在通过 Central Admin UI 部署时它会要求您选择一个 Web 应用程序)。

令人惊讶的是,它仍然给了我同样的错误(无法加载接收器组件......)。但在收回、清洁和另一次部署之后,它奏效了!(有时,您可能需要做一些额外的事情,例如重新启动 SharePoint 计时器服务、重新启动 IIS、关闭和打开 VS 或重新启动事件才能使其正常工作)

感谢所有对我的问题发表评论的人。

于 2013-11-15T10:16:43.440 回答