Deployment 为什么我的项目是';调试时包中缺少的程序集?

Deployment 为什么我的项目是';调试时包中缺少的程序集?,deployment,sharepoint-2010,assembly-resolution,wsp,feature-receivers,Deployment,Sharepoint 2010,Assembly Resolution,Wsp,Feature Receivers,我有一个SharePoint项目,我已经调试了一段时间,没有任何问题 今天,我在项目的唯一功能中添加了一个功能接收器。关于VisualStudio默认添加的空receiver类,我还没有做任何更改 “Package”命令现在生成一个包,其中包含我的项目的DLL文件(正如您所期望的——添加一个功能接收器不应该改变这一点) 但是,调试时,生成的包不包含项目的DLL文件,部署工作失败,出现以下错误: 部署步骤“添加解决方案”中出错:未能加载 接收器组件“ABC,版本=1.0.0.0,区域性=中性, P

我有一个SharePoint项目,我已经调试了一段时间,没有任何问题

今天,我在项目的唯一功能中添加了一个功能接收器。关于VisualStudio默认添加的空receiver类,我还没有做任何更改

“Package”命令现在生成一个包,其中包含我的项目的DLL文件(正如您所期望的——添加一个功能接收器不应该改变这一点)

但是,调试时,生成的包不包含项目的DLL文件,部署工作失败,出现以下错误:

部署步骤“添加解决方案”中出错:未能加载 接收器组件“ABC,版本=1.0.0.0,区域性=中性, PublicKeyToken=2377fad544a7c307“用于功能“ABC_XYZ功能”(ID: dca34989-a2f2-413b-b5c4-958e0bbb84ef)。: System.IO.FileNotFoundException:无法加载文件或程序集的ABC, 版本=1.0.0.0,区域性=中性,PublicKeyToken=2377fad544a7c307'或 它的一个依赖项。系统找不到指定的文件。 文件名:“ABC,版本=1.0.0.0,区域性=中性, PublicKeyToken=2377fad544a7c307'at System.Reflection.Assembly.\u nLoad(AssemblyName文件名,字符串 代码库、证据汇编安全性、汇编位置提示、, stackcrawmark&stackMark,布尔throwOnFileNotFound,布尔值 (用于内省)在 System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, 证据集合安全性,堆栈爬网标记和堆栈标记,布尔值 用于内省)在System.Reflection.Assembly.InternalLoad(字符串 assemblyString、证据assemblySecurity、StackCrawlMark和stackMark、, 在System.Reflection.Assembly.Load(字符串 汇编字符串)在 Microsoft.SharePoint.Administration.SPFeatureDefinition.get\u ReceiverObject()

警告:程序集绑定日志记录已关闭。要启用程序集绑定 记录失败,请设置注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog](DWORD)到1。注:有 某些性能损失是否与程序集绑定失败相关 登录中。要关闭此功能,请删除注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog]

删除功能接收器允许我再次调试而不会出现问题,但只要我重新添加功能接收器,问题就会出现

我已经尝试过清理和重建,然后调试,但是错误不会消失,除非/直到我删除功能接收器


为什么当我使用“package”命令时,我的项目的程序集会包含在包中,而当我使用“Start debug”命令时,则不会包含在包中,那么添加功能接收器会导致这种情况发生吗?

我不知道是什么原因导致了这种情况发生,但当我手动清除obj和bin目录时,问题就消失了。以下是我从问题中引用的状态到成功调试w/a feature receiver所遵循的步骤:

  • 删除功能接收器
  • 清洁溶液
  • 关闭Visual Studio
  • 在Windows资源管理器中删除SharePoint项目的obj文件夹
  • 在Windows资源管理器中删除SharePoint项目的bin文件夹
  • 打开Visual Studio并重新添加功能接收器
  • 开始调试

  • 这个问题被接受的答案对我来说并不适用

    以下方面确实起了作用:

    …在这种特殊情况下,只需更改项目的强键组件即可。如果您以前没有更改过,那么它位于项目->签名的属性下。在“选择强名称密钥文件”下,选择“新建”。密码是可选的


    感谢这篇博文:

    我试图在Visual Studio中右键单击解决方案-属性。 在应用程序下,程序集信息,然后我将程序集和文件版本提高了“最小1”(从1.0.0.0提高到1.0.0.1)。
    然后就有可能将解决方案(主要是激活功能)部署到“WebApplication”

    +1中,因为与所有逻辑相反,这是可行的。怎么用?这其中的某些部分可以删掉吗?(我意识到让VisualStudio运行会导致立即重新生成obj文件夹。)我创建了这个答案b/c我不明白它为什么起作用,这是一个我不想重复的故障排除工作。如果我发现其中任何一个都是不必要的,我肯定会编辑。accepted对我来说也不起作用,但新的关键解决方案起到了作用。谢谢,杰!