2014-10-02 61 views
4

我有VS 2010,2012和2013.我從svn得到了一個現有的項目,所以它從來沒有在我的機器上。當我試圖編譯,我得到了以下錯誤與VS 2010和FindRibbons構建錯誤

The "FindRibbons" task could not be loaded from the assembly    
'Microsoft.VisualStudio.Tools.Office.BuildTasks, 
Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a. Confirm that the 
<UsingTask> declaration is correct, that the assembly and all its dependencies are 
available, and that the task contains a public class that implements 
Microsoft.Build.Framework.ITask. 

我發現了幾個帖子mentionning去

C:\ Program Files文件 (86)\的MSBuild \微軟\ VisualStudio的\ V10。 0 \ OfficeTools

,打開Microsoft.VisualStudio.Tools.Office.targets 與12.0.0.0,我做到了

全部更換10.0.0.

但隨後得到了以下錯誤

The "FindRibbons" task has been declared or used incorrectly, or failed during construction. Check the spelling of the task name and the assembly name. 
+0

您可以從Visual Studio中刪除並重新添加引用嗎? – johnjps111 2015-06-10 21:47:02

+0

你試過換成11.0.0.0嗎? – 2015-06-11 09:14:14

+0

是的,我也試過了。沒有幫助。它看起來像一些Visual Studio更新打破了這個「FindRibbons」任務(錯誤的彙編版本或參考 - 不知道)。嘗試卸載Visual Studio的所有版本,然後按照升序安裝它們(2013 Update4)。爲我工作。 – Nikolay 2015-06-11 09:21:40

回答

0

嘗試打開的csproj文件,查找<ItemGroup>,在那裏你會看到一個<Reference Include="Findribbons">包括<HintPath>。您可能想要查看它是否指向您引用的庫文件的正確(或任何)版本。

尤其是對於下載的項目,您會發現參考有時不能正確設置(絕對路徑)。

+0

在我的vbproj文件中沒有Include = FindRibbons – hawbsl 2015-06-11 09:00:11

+0

您是否有鏈接到項目? – Chavez 2015-06-11 09:27:05

2

這很可能是DLL Hell問題,您在GAC中安裝了Microsoft.VisualStudio.Tools.Office.BuildTasks.dll的錯誤版本。它缺少FindRibbons class

對此有一個半正式的解釋,VS2012的早期預覽版部署了這個缺少該類的DLL的一個版本。在this MSDN forums thread討論。提出你已經嘗試過的相同的解決方法,而不是解決方案。否則,請提醒您不要在您需要完成工作的計算機上安裝Visual Studio的測試版。

這個問題是非常複雜的,因爲MSDN文檔說該類只適用於VS2012及以上版本,不適用於VS2010。當你安裝VS2013時,必須有一個<bindingRedirect>的地方可以將版本10.0.0.0和11.0.0.0轉發到12.0.0.0。不知道在哪裏,我無法在我的機器上找到它。不用說,這和DLL Hell可以得到的差不多。兩種可能的解決方案:

  • Visual Studio不再自動升級項目文件。但這就是你想要在這種情況下發生的事情,你需要使用VS2013工具鏈。使用文本編輯器編輯.csproj文件(記事本將執行)並將ToolsVersion屬性更改爲「12.0」。

  • 獲得GAC固定並擺脫壞版本的DLL。首先需要一個正確的版本,將其從另一臺具有該DLL的已知好的副本的機器複製下來。您可以使用資源管理器找到它,導航到C:\ Windows \ Microsoft.NET \ assembly \ GAC_MSIL \ Microsoft.VisualStudio.Tools.Office.BuildTasks。你可能有多個子目錄,我只有一個VS2013。 12.0子目錄中的DLL日期爲8/7/2014,長度爲102,688個字節。您可以使用Reflector或ILSpy之類的反編譯器來檢查它是否包含FindRibbons類。

絕望的舉動如果沒有一個解決這個問題就是重新安裝一切。如果確實在該機器上安裝了VS2012的早期版本,仍然很難確定是否修復了腐敗的原始來源。運行setup.exe/uninstall/force確實會消除這種情況。祝你好運,永遠不要解決一個有趣的問題。 -