我有一个SharePoint 2013解决方案项目(内置在VS2013中),其中包含一个WebApplication级别的功能集,其中一个事件接收器根本没有代码(仅用于测试目的)。
当我将功能的Activate On Default属性设置为true并进行部署时,该功能似乎已被激活,但ULS向我显示以下错误(我用点替换了实际的程序集/文件名):
ArgumentException:无法加载接收器程序集“..................”功能“................. .....“(ID:5e6fc154-bc0d-4768-a558-8d4d8227d92e):System.IO.FileNotFoundException:无法加载文件或程序集'................ 。或其中一个依赖项。系统找不到指定的文件。
当我尝试停用它时,我得到了同样的错误。当我将Activate On Default属性设置为false时,当我尝试手动激活它时会出现相同的错误。
我尝试了以下但没有成功:
重新启动IIS和计时器服务
将项目的Assembly Deployment Target属性设置为WebApplication和GlobalAssemblyCache
我想要做的就是在Web应用程序级别部署我的功能,让事件接收器运行,并能够成功激活/停用该功能。
我非常感谢你对此的帮助。
此致
答案 0 :(得分:1)
我设法解决了我的问题。
经过大量研究后,我了解到如果Web应用程序级功能包含事件接收器,则必须将该程序集部署到GAC。但是,这将导致SharePoint全局部署wsp包。但我想将软件包部署到特定的Web应用程序。所以我进入包设计窗口,转到高级选项卡,通过选择“从项目输出添加组件”选项将组件添加到包中,输入其详细信息并选择“GlobalAssemblyCache”选项。最后,我选择了该项目,并在其属性窗口中将“Include Assembly In Package”属性设置为False。 (如果你不这样做,VS会在编译时抛出错误)
这导致SharePoint通过VS自动将程序包部署到我的Web应用程序(或者它将要求您在通过Central Admin UI部署时选择Web应用程序)。
令人惊讶的是,它仍然给了我同样的错误(无法加载接收器组件......)。但在撤回,清理和另一次部署之后,它起作用了! (有时,您可能需要执行额外的操作,例如重新启动SharePoint计时器服务,重新启动IIS,关闭和打开VS,或重新启动事件以使其工作)
感谢所有对我的问题发表评论的人。