2014-10-02 90 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确实会消除这种情况。祝你好运,永远不要解决一个有趣的问题。 -