解决问题的办法: “FileNotFoundException” 与我功能接收机.

我正在研究一种功能上个星期,会将一些事件接收器添加到特定列表实例. (我有点博文在这里该列表接收机).

使用命令行, 我无法安装功能,并没有错误 (但请参阅下面的隐藏错误). 当我试图部署上该网站的功能, MOSS 抱怨"FileNotFoundException" 错误. 此博客条目描述怎么解决的.

这是一个 MOSS 表明我在 web 浏览器中的错误:

功能 ' b2cb42e3-4f0a-4380-aaba-1ef9cd526f20’ 不安装,因为加载的事件接收器大会"xyzzyFeatureReceiver_0" 失败: System.IO.FileNotFoundException: 未能加载文件或程序集 xyzzyFeatureReceiver_0’ 或一个依赖项. 系统无法找到指定的文件.
文件名称: ' xyzzyFeatureReceiver_0’
在 System.Reflection.Assembly.nLoad(进行校验文件名, 字符串代码库, 证据 assemblySecurity, 大会 locationHint, StackCrawlMark& stackMark, 布尔 throwOnFileNotFound, 布尔 forIntrospection)
在 System.Reflection.Assembly.InternalLoad(进行校验 assemblyRef, 证据 assemblySecurity, StackCrawlMark& stackMark, 布尔 forIntrospection)
在 System.Reflection.Assembly.InternalLoad(字符串 assemblyString, 证据 assemblySecurity, StackCrawlMark& stackMark, 布尔 forIntrospection)
在 System.Reflection.Assembly.Load(字符串 assemblyString)
在 Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()
警告: 程序集绑定日志记录打开关闭.
要启用程序集绑定失败日志记录, 设置注册表值 [HKLMSoftwareMicrosoftFusion!EnableLog] (DWORD 值) 自 1.
请注意: 有一些与程序集绑定失败日志记录相关联的性能.
若要关闭此功能, 删除注册表值 [HKLMSoftwareMicrosoftFusion!EnableLog].

与 Windows SharePoint 服务问题的疑难解答.

我知道如何去故意导致该错误: 不在 gac 中安装程序集. 但, 它是在 gac 中. 我通常将程序集安装到 gac 中通过将它们拖入 c:\使用 windows 资源管理器的 windowsassembly 文件夹. 我从来 100% 舒适这样做,因为我总是以为那 gacutil 存在的原因 … 所以我试过了. 它没有区别.

互联网中搜索的结果,并找到这篇帖子: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2243677&SiteID=1

海报碰巧使用同一根位的代码 (从内部 WSS 书从该列表中) 所以这是一个充满希望的迹象. 不过, 装饰与大会的建议 [程序集: ] 指令对我没有意义. 不管怎样,我还是把它尝试,右. 它没有区别.

然后我注意到我的类定义是不公开. 我将它公开并无差异.

下一步, 我去了启用"程序集绑定失败日志的麻烦" (提供的帮助和最准确的说明) 这是在哪里,事情开始变得有趣. 该日志显示我运行时到处搜索,该服务器上为我的程序集. 它甚至似乎在寻找它在我的药柜. 但 … 它不会在 GAC 中搜索它.

我穿上我冬季夹克和去再次搜索互联网,发现有人也有这问题. 在这个帖子中的冗长讨论彼得斯掉到什么和我找不到解决方案.

我将我的程序集移动到日志声称它搜索并多一点进步的地方之一. 一个新的错误,在浏览器中尝试激活该功能时我得到现在工作:

未能从程序集"xyzzyFeatureReceiver_0"创建功能接收器对象, 键入"Conchango.xyzzyFeatureReceiver" 为功能 b2cb42e3-4f0a-4380-aaba-1ef9cd526f20: System.ArgumentNullException: 值不能为空.
参数名称: 类型
在 System.Activator.CreateInstance(类型类型, 布尔非公开)
在 System.Activator.CreateInstance(类型类型)
在 Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()

与 Windows SharePoint 服务问题的疑难解答.

一个最后一次去互联网的时间!

这一次找出, 不出所料, 苔藓发出此错误,因为程序集不是 GAC 中.

我想要得到的东西正从这并尝试感到有点骄傲的了 Fugitive MSIL 程序集, 但它不工作. 我只是平原恼火. 我发现自己喃喃自语"鸡还是先有蛋" 根据我的呼吸.

我最后决定平底船. 我创建一个完全新的项目和复制/粘贴到这个新项目从 incredible-cloaked-from-the-GAC-assembly 非工作项目在代码. (我寻找称为"隐藏从程序集绑定如果安装到 GAC 中像一个生成标志" 但找不到一个).

安装功能,并将其激活, … 它的工作原理! 所以, 所有这一切之后, 我基本上已经到 ' 重新启动’ 我的项目. 这是为什么我讨厌的计算机的另一个原因.

我确实学到一些有用的这. 以前安装过整天都使用 stsadm 命令行功能和已使用"-力" 出于习惯选项. 因为某些原因, 我没有使用-force 选项,当你安装了新的项目. 这一次, 我做的其实, 真正忘了将这个新项目的程序集复制到 gac 中. 结果, 我收到了"FielNotFoundException" 错误. 这一次, 得从 stsadm, 没有,当我试着激活通过 web 浏览器功能. 所以, -力事实上是扮演两个角色. 它允许您重新安装现有的功能. 它还允许您将不能工作在运行时通过抑制错误越野功能安装. 它可能表示尽可能帮助地方但永远不会注意到了它.

</结束>

Technorati 标签: ,

3 上“的想法解决问题的办法: “FileNotFoundException” 与我功能接收机.

  1. 弗朗西斯科

    还, 我有我 2 当我重命名功能接收器上的 Namespace 的癔病 nintendoSIXTYFOURRRR-中--坏方向时刻小时, 来帮助跟踪您或其他任何人的开始的地方.

    答复
  2. 弗朗西斯科

    问题的根源在于对 sharepoint 数据库中的已部署 wsp. 我读了你的帖子和虽然它确实不会解决这个问题我们有几个项目具有巨大的解决方案和数十个动人的一切文件并不是一个选项.

    无论多少您您 GAC 或更新您的程序集, 什么给你麻烦的是当前 WSP 安装在 sharepoint 中的程序集.

    您可以轻松地注意到试图只退刀解决方案 (这是该错误发生的地方). "回缩时间上发生的一切" 应考虑"部署的 wsp"-只不该项目本身.

    我的解决方法是:

    – 管理中心: 取消解决方案
    – stsadm: deletesolution
    – Visual Studio => 项目 => 包
    – stsadm: addsolution-ProjectbinDebugProject.wsp 的文件
    – stsadm: deploysolution-名称 project.wsp-立即 allowgacdeployment-力
    – Visual Studio => 部署

    我也 bin 和调试文件夹从项目中删除再次运行部署之前, 不可能有任何影响,但值得评论.

    这两个作品

    "功能 … 不安装,因为事件接收器的程序集的加载"

    "从程序集创建功能接收器对象失败"

    谢谢!
    弗朗西斯科

    答复
  3. 汤姆克拉克森

    刚刚花了几个小时试图解决同样的问题并找到更好的解决方案比简单地重新创建项目.

    事实证明,由于某种原因,Visual Studio 已经将生成目标设置为 64 或 MSIL x 而不是 x 86 – 在 gac 中的程序集是, 只是不相同的 gac 中, 64 位 SharePoint 正在.

    答复

离开回复 弗朗西斯科 取消回复

您的电子邮件地址不会被公开. 必需的地方已做标记 *