使用VS 2010和FindRibbons构建错误

Eli*_*eth 5 build visual-studio-2010

我有VS 2010,2012和2013.我从svn获得了一个现有的项目,所以它从来没有在我的机器上.当我尝试编译时,我收到以下错误

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.
Run Code Online (Sandbox Code Playgroud)

我找到了几个提到的帖子

C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v10.0\OfficeTools

,打开Microsoft.VisualStudio.Tools.Office.targets并将所有10.0.0.0替换为我做过的12.0.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.
Run Code Online (Sandbox Code Playgroud)

Han*_*ant 5

这很可能是DLL地狱问题,因为GAC中安装的Microsoft.VisualStudio.Tools.Office.BuildTasks.dll版本错误。它缺少FindRibbons类

对此有一个不俗的解释,VS2012的早期预览版部署了该类缺少的DLL版本。在此MSDN论坛主题中讨论。提出与您已经尝试过的相同解决方法,而不是解决方案。否则,提醒您切勿在需要完成工作的计算机上安装Visual Studio的beta版本。

由于MSDN文档指出该类仅适用于VS2012及更高版本,而不适用于VS2010,因此该问题更加令人困惑。<bindingRedirect>当您安装VS2013时,必须有一个将版本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确实可以消除它。祝你好运,从来没有一个有趣的问题可以解决。--