8

我有一個SharePoint項目,我已經調試了一段時間沒有問題。爲什麼我調試時我的項目的程序集從程序包中丟失了?

今天我添加了一個功能接收器到項目的唯一功能。我還沒有更改Visual Studio默認添加的空接收器類的任何內容。

「Package」命令現在會生成一個包含我的項目DLL文件的包(正如您所期望的那樣 - 添加一個功能接收器不應該改變這一點)。

然而,當我調試,生成的包確實包括我的項目的DLL文件,並部署努力失敗,出現以下錯誤:

Error occurred in deployment step 'Add Solution': Failed to load receiver assembly "ABC, Version=1.0.0.0, Culture=neutral, PublicKeyToken=2377fad544a7c307" for feature "ABC_XYZ Feature" (ID: dca34989-a2f2-413b-b5c4-958e0bbb84ef).: System.IO.FileNotFoundException: Could not load file or assembly 'ABC, Version=1.0.0.0, Culture=neutral, PublicKeyToken=2377fad544a7c307' or one of its dependencies. The system cannot find the file specified. File name: 'ABC, Version=1.0.0.0, Culture=neutral, PublicKeyToken=2377fad544a7c307' at System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection) at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) at System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) at System.Reflection.Assembly.Load(String assemblyString) at Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()

WRN: Assembly binding logging is turned OFF. To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1. Note: There is some performance penalty associated with assembly bind failure logging. To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].

刪除功能接收器可以讓我無需再次調試問題,但只要我重新添加功能接收器,問題就會返回。

我試過清洗和重建,然後調試,但錯誤不會消失,除非/直到我刪除功能接收器。

爲什麼我的項目的組件獲得包括在包中,當我使用「打包」命令,而不是當我使用了「啓動調試」命令,怎麼樣添加功能接收器會導致這樣的事情發生?

回答

13

我不知道是什麼導致了它的發生,但是當我手動清除obj和bin目錄時問題就消失了。下面是我遵循從國家獲得的步驟列舉的問題調試成功瓦特/功能接收器:

  1. 刪除功能接收
  2. 清潔液
  3. 關閉Visual Studio的
  4. 刪除的SharePoint項目在Windows資源管理器中的obj文件夾
  5. 在Windows資源管理器中刪除SharePoint項目的bin文件夾
  6. 打開Visual Studio並重新添加功能部件接收器
  7. 開始調試
+0

+1因爲,針對所有邏輯,這是有效的。怎麼樣?這部分可以編輯出來嗎? (我意識到讓Visual Studio運行導致obj文件夾立即重新生成。) – 2014-03-12 17:34:21

+1

我創建了這個答案b/c我不明白它爲什麼起作用,而且這是一個我不想重複的故障排除工作。如果我發現它是不必要的,我一定會編輯。 – lance 2014-03-13 03:31:42

+0

它的工作,但有線如何修復。 – Prageeth 2015-03-02 08:15:01

18

接受的答案對這個問題並沒有爲我工作。

下面做工作:

...simply changing out the project’s strong key assembly worked in this particular case. If you haven’t had to change this before, it is under the properties of the project -> Signing. Under ‘Choose a strong name key file’, select New. The password is optional.

由於這一博客帖子:Farm Solution Deployment Problems

+0

也沒有爲我工作,但新的關鍵解決方案做到了。謝謝,傑伊! – Sergey 2014-07-09 13:38:14

+0

我也一樣,這個解決方案工作。做得好! – 2014-07-16 14:53:07

+0

爲我工作,謝謝 – 2016-07-27 16:04:11

0

我試圖在Visual Studio去解決上點擊右鍵 - 屬性。 在應用程序,程序集信息,然後我提出了「最低1」(從1.0.0.0到1.0.0.1)的彙編和文件版本。 然後有可能部署(並主要激活功能)解決方案「進入WebApplication」

相關問題