使用VS 2010和FindRibbons构建错误

时间:2014-10-02 20:08:36

标签: visual-studio-2010 build

我有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.

我发现有几个帖子要提到

  

C:\ Program Files   (86)\的MSBuild \微软\ 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.

2 个答案:

答案 0 :(得分:5)

这很可能是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属性更改为&#34; 12.0&#34;。

  • 修复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确实可以摆脱它。祝它好运,从来没有一个有趣的问题需要解决。   -

答案 1 :(得分:0)

尝试打开 csproj 文件并查找<ItemGroup>,您应该看到<Reference Include="Findribbons">包含<HintPath>。您可能希望查看它是否引用了您引用的库文件的正确(或任何)版本。

特别是对于下载的项目,您会发现有时未正确设置引用(绝对路径)。